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