我有一張表。客戶每次更新產品時都會存儲價格。這樣,我可以監視價格變化,如果你喜歡歷史。MySQL查詢按產品編號的價格變化量
表結構
ID (Primary Key)
Date (DateTime)
Price (Decimal)
Product_ID (INT) - Foreign Key
我想找到的總次數一個價格每個產品兩個日期之間的變化,然後加起來的總。
因此,例如,我可以在主頁上說:「我們已經改變了X產品10日2013年12月的價格 - 二十月2013)
我有一張表。客戶每次更新產品時都會存儲價格。這樣,我可以監視價格變化,如果你喜歡歷史。MySQL查詢按產品編號的價格變化量
表結構
ID (Primary Key)
Date (DateTime)
Price (Decimal)
Product_ID (INT) - Foreign Key
我想找到的總次數一個價格每個產品兩個日期之間的變化,然後加起來的總。
因此,例如,我可以在主頁上說:「我們已經改變了X產品10日2013年12月的價格 - 二十月2013)
這是很容易通過查詢用一個簡單的組辦
。select count(*), product_id from table where date>='' and date<'' group by product_id
這會給你的產品ID和變化的過程中時間段數。
SELECT SUM(priceChanges)
FROM (SELECT count(*) as priceChanges
FROM Table
WHERE DATE BETWEEN start AND end
GROUP BY product_id
)
UNION
SELECT count(*), product_id
FROM Table
WHERE DATE BETWEEN start AND end
GROUP BY product_id
第一行會的全部資金,其餘的將是價格變動數每個product_id。
我不喜歡這樣的結果集,因爲它需要應用程序端的邏輯來解析結果集。但是,如果您不想將其拆分併發出2個查詢,則無論如何您都需要應用程序邏輯。
你可以做的另一件事是隻發出底部選擇語句,並在處理結果集時計算所有計數的總和。
如果查詢速度慢,您可能需要考慮在日期列上創建索引。
試試這個。
SELECT COUNT(*) AS total,
product_id
FROM table
WHERE date BETWEEN 'fromDate' AND 'toDate'
GROUP BY product_id
我之前有過這個,它返回的結果太多。我知道一個事實,它返回的結果有太多的價格變化。 –
你可以發佈一些數據嗎?它會更清楚。並且它會返回很多記錄,因爲我們按Product_id進行分組,它會以product_id的編號重複。 –