在P A解決方案沒有存儲過程茜SQL:Fiddle
SELECT sku
, COUNT(1) AS consecutive_days
, SUM(items) AS items
FROM
(
SELECT sku
, items
-- generate a new guid for each group of consecutive date
-- ie : starting with day_before is null
, @guid := IF(@sku = sku and day_before IS NULL, UUID(), @guid) AS uuid
, @sku := sku AS dummy_sku
FROM
(
SELECT currents.sku
, befores.record_date as day_before
, currents.items
FROM sales currents
LEFT JOIN sales befores
ON currents.sku = befores.sku
AND currents.record_date = befores.record_date + INTERVAL 1 DAY
ORDER BY currents.sku, currents.record_date
) AS main_join
CROSS JOIN (SELECT @sku:=0) foo_sku
CROSS JOIN (SELECT @guid:=UUID()) foo_guid
) AS result_to_group
GROUP BY uuid, sku
查詢是真的沒有那麼難。通過cross join (SELECT @type:=0) type
聲明變量。然後在選擇中,您可以逐行設置變量值。模擬秩函數是必要的。
我認爲你需要遞歸連接來實現MySQL不可能實現的功能。你可以在數據庫上創建存儲過程嗎? – Benos 2013-04-26 06:36:39
是的,服務器是我的。 – 2013-04-26 06:40:15