sql >> データベース >  >> RDS >> Mysql

前の行のMySQLから数量を引く

    テーブルを結合せずにこれを使用することもできます。outSELECTは、一部の列を非表示にするためだけのものです。

    SELECT Quantity, `timestamp`, sold_qty
    FROM (
        SELECT i.*,
        @sold_qty := GREATEST(@last_qty - i.`Quantity`,0) as sold_qty,
        @last_qty := i.`Quantity` as last_qty
        FROM InventoryTest_history i
        CROSS JOIN ( SELECT @last_qty := '', @sold_qty := 0) as init
        ORDER BY `timestamp`
        ) as result;
    

    サンプル

    mysql> SELECT * from InventoryTest_history;
    
    +----+-------------+----------+---------------------+
    | id | SKU         | Quantity | timestamp           |
    +----+-------------+----------+---------------------+
    |  1 | (L) U-Joint |      985 | 2016-12-27 10:08:58 |
    |  2 | (L) U-Joint |      960 | 2016-12-28 10:09:52 |
    |  3 | (L) U-Joint |      955 | 2016-12-29 16:01:02 |
    +----+-------------+----------+---------------------+
    3 rows in set (0,02 sec)
    
    mysql> SELECT Quantity, `timestamp`, sold_qty
        -> FROM (
        ->     SELECT i.*,
        ->     @sold_qty := GREATEST(@last_qty - i.`Quantity`,0) as sold_qty,
        ->     @last_qty := i.`Quantity` as last_qty
        ->     FROM InventoryTest_history i
        ->     CROSS JOIN ( SELECT @last_qty := '', @sold_qty := 0) as init
        ->     ORDER BY `timestamp`
        ->     ) as result;
    +----------+---------------------+----------+
    | Quantity | timestamp           | sold_qty |
    +----------+---------------------+----------+
    |      985 | 2016-12-27 10:08:58 |        0 |
    |      960 | 2016-12-28 10:09:52 |       25 |
    |      955 | 2016-12-29 16:01:02 |        5 |
    +----------+---------------------+----------+
    3 rows in set (0,00 sec)
    
    mysql> SELECT i.*,
        -> @sold_qty := GREATEST(@last_qty - i.`Quantity`,0) as sold_qty,
        -> @last_qty := i.`Quantity` as last_qty
        -> FROM InventoryTest_history i
        -> CROSS JOIN ( SELECT @last_qty := '', @sold_qty := 0) as init
        -> ORDER BY `timestamp`;
    +----+-------------+----------+---------------------+----------+----------+
    | id | SKU         | Quantity | timestamp           | sold_qty | last_qty |
    +----+-------------+----------+---------------------+----------+----------+
    |  1 | (L) U-Joint |      985 | 2016-12-27 10:08:58 |        0 |      985 |
    |  2 | (L) U-Joint |      960 | 2016-12-28 10:09:52 |       25 |      960 |
    |  3 | (L) U-Joint |      955 | 2016-12-29 16:01:02 |        5 |      955 |
    +----+-------------+----------+---------------------+----------+----------+
    3 rows in set (0,00 sec)
    
    mysql>
    


    1. $ mysqli-> stmt_init()を呼び出させないプリペアドステートメント

    2. Laravel:Fakerで複数のユニークな列をシードする

    3. MySQLのドット文字との単語全体のマッチング

    4. JavaSSHMySQL接続