0
我有一個非常簡單的表,其中包含以下欄:MySQL的小組分組方式,結果
id | customer_id | total | created_at
我當時正在此查詢得到每天的結果在過去的十天
SELECT SUM(total) AS total, DATE_FORMAT(created_at, "%d/%m/%Y") AS date
FROM table
WHERE created_at BETWEEN "2017-02-20" AND "2017-03-01"
GROUP BY created_at
ORDER BY created_at DESC
這工作得很好,但我只注意到有一個與被複制某種原因進口行的問題,所以我想更新查詢,以便能夠處理這種情況如果它再次發生,換句話說選擇一排,而不是所有的日期和用戶ID是相同的(總也ID entical)。
如果我將customer_id
添加到該組似乎有效,但麻煩與那是查詢返回每個客戶每天的結果時,我只想要總數。
我已經嘗試了幾件事,但我還沒有破解它,我認爲這將是可以實現的使用子查詢和/或內部連接,我已經嘗試過目前爲止,但數字是非常錯誤的:
SELECT
created_at,
(
SELECT SUM(total)
FROM table test
WHERE test.created_at = table.created_at
AND test.customer_id = table.customer_id
GROUP BY customer_id, created_at
LIMIT 1
) AS total
FROM table
WHERE created_at BETWEEN "2017-02-20" AND "2017-03-01"
GROUP BY created_at
ORDER BY created_at DESC
這也是一個大表,所以找到一個高性能的方式來做到這一點也很重要。
嗨@Gordon Linoff,感謝您的回答,將嘗試在第二,是的,這絕對是一個'DATE'列。 **更新**答作品完美,我剛在'GROUP BY created_at'添加到外部查詢(在'ORDER BY'以上)作爲原始答案返回一個結果。再次感謝! – martincarlin87