【发布时间】:2015-01-26 20:22:03
【问题描述】:
我正在尝试编写一个查询,该查询在特定日期范围内每次在我的表中出现同一个人时查找。然后,它将这个人分组并汇总他们在特定范围内的支出。如果他们的消费习惯大于 X 金额,则返回此人在指定日期范围内的每一行。不仅仅是分组的总金额。这是我目前所拥有的:
SELECT member_id,
SUM(amount) AS total
FROM `sold_items`
GROUP BY member_id
HAVING total > 50
这是检索正确的总数和返回的成员花费超过 50 美元,但不是每一行。只是每个成员的总数和他们的总数。我目前正在查询整个表,我还没有添加日期范围。
【问题讨论】:
-
不可能。当您
group时,该组的所有成员行都将折叠成一个代表行。如果你想要原始的成员行,那么你不能使用group by。 -
同意。在这里,您希望在查询上有一个应用层,以根据报告的要求提供小计和细分。
-
您可以
JOIN这个子查询与原表返回所有相关行。 -
我可以使用SQL Server中的OVER()函数实现这个结果,不知道在mySQL中是否有类似的东西。
-
我正在用 PHP 编写后端。我正在考虑将超过 X 数量的成员返回到我的 PHP 模型,然后使用 IN 运行第二个查询并编写一个循环以包含在第一个查询中找到的所有成员。这是不好的做法吗?
标签: mysql