我想计算查询中分组发生的次数。
SELECT COL1,
COL2,
*(count COL1)*
FROM TABLE
GROUP BY COL1, COL2
所以我希望看到结果如此:
COL1, COL2, Count
A, A, 1
A, B, 2
B, A, 1
B, B, 2
B, C, 3
Count(*)
会给我一个我不想要的分组行的总和,但我似乎无法绕过它或找到一种方法来做到这一点。无论如何,提前谢谢。
答案 0 :(得分:1)
您的查询(适当放置括号)可以满足您的需求:
SELECT COL1, COL2, count(*)
FROM TABLE
GROUP BY COL1, COL2;
如果您想要列的 sum ,请使用sum()
函数。
编辑:
如果你想枚举这些群体(尽管问题是用相当清晰的英语提出的),你可以这样做:
SELECT col1, col2,
(select count(*)
from table t2
where t2.col1 = t.col1 and
t2.col2 <= t.col2
) as Enumeration
FROM table t1
GROUP BY col1, col2;
答案 1 :(得分:1)
您应该添加auto_increment
列以进行订购。之后,尝试这样的事情:
SELECT a.col1, a.col2,
(SELECT Count(*) From T1 c
WHERE c.col1 = a.col1
AND c.ID <= a.ID) as count
FROM T1 a;
<强> SQL Fiddle 强>
或没有auto_increment
试试这个:
SELECT col1, col2,
(select count(*) from T1 t2
where t2.col2 <= t1.col2 and
t2.col1 = t1.col1
) as Enumeration
FROM T1 t1
GROUP BY col1, col2;
<强> SQL Fiddle 强>