我有一个帐户表和一个记录表帐户有多个记录。我想通过“记录数”范围来分解帐户总数。即显示的MySQL和CASE WHEN与值范围
Count of Records | Count
=========================
0-25 | 100
25 - 50 | 122
50 - 100 | 300
等等
击穿我使用下面的查询,但我不能用“GRP”,这是我想要的,在最好的方式任何帮助得到它的组修改查询?
SELECT count(*) as ct,
CASE
WHEN COUNT(*) < 25 THEN '1-25'
WHEN COUNT(*) >= 25 < 50 THEN '25-50'
WHEN COUNT(*) >= 50 < 100 THEN '50-100'
WHEN COUNT(*) >= 100 < 250 THEN '100-250'
WHEN COUNT(*) >= 250 < 500 THEN '250-500'
WHEN COUNT(*) >= 500 < 1000 THEN '500-1000'
ELSE '1000+'
END AS grp
FROM records r,accounts a
WHERE r.account_id=a.id
ORDER BY ct
我得到 ERROR 1111(HY000):无效使用组功能的 我使用的MySQL 5.1 谢谢! – kickdaddy 2010-05-26 14:56:32
对不起,因为您在sql查询的主要部分使用了'r.Account_id'和'a.id'这两列,所以您需要将它们包括在组By子句中。每列或表达式都被引用t9o在不属于聚合函数(Sum,Avg,Min,Max等)的查询中的主要(聚合前)部分必须在组By子句中提及。 – 2010-05-26 19:06:12
我看不到如何在GROUP BY子句中使用COUNT(*)。这甚至有可能吗? – 2015-02-11 01:07:24