2

選択した 2 つの日の価格差を見つける方法。示されている私のテーブル

---------------------------------------
id      price      date        product
---------------------------------------
1       10         15-12-2013  pen
2       40         15-12-2013  book
3       15         16-12-2013  pen
4       42         16-12-2013  book
-------------------------------------

if startdate:15-12-2013 & enddate: 16-12-2013 のような出力を取得するSQLクエリが必要です

product  startdate(15-12-2013)  enddate(16-12-2013) difference
--------------------------------------------------------------
pen        10                      15                  5
book       40                      42                  2
--------------------------------------------------------------
4

3 に答える 3

1

これを試して:

SELECT product, StartDatePrice, EndDatePrice, (EndDatePrice - StartDatePrice) AS Difference 
FROM (SELECT product, MAX(IF(a.date = '15-12-2013', a.price, 0)) AS StartDatePrice, 
             MAX(IF(a.date = '16-12-2013', a.price, 0)) AS EndDatePrice 
      FROM tableA a 
      GROUP BY product
     ) AS A;
于 2013-12-26T11:16:33.243 に答える
0

毎日ではなく、価格が変わるたびに価格テーブルに行を挿入する場合は、次のクエリの使用を検討する必要があります。

SELECT
  p1.product,
  p1.price as stardtade,
  p2.price as enddate,
  p2.price-p1.price as difference
FROM
  prices p1 INNER JOIN (SELECT product, MAX(dt) max_dt
                        FROM prices
                        WHERE dt<='2013-12-15'
                        GROUP BY product) st
  ON p1.product=st.product AND p1.dt = st.max_dt

  INNER JOIN

  prices p2 

  ON p1.product=p2.product

  INNER JOIN (SELECT product, MAX(dt) max_dt
                        FROM prices
                        WHERE dt<='2013-12-16'
                        GROUP BY product) ed
  ON p2.product=ed.product AND p2.dt = ed.max_dt

より複雑ですが、テーブルにいくつかの日付が存在しない場合でも機能します。その場合、価格にはラスクの既知の値が使用されます。

ここでフィドルを参照してください。

于 2013-12-26T11:33:21.970 に答える