MySQL依靠分组

时间:2013-09-09 10:46:11

标签: mysql sql

我想计算查询中分组发生的次数。

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(*)会给我一个我不想要的分组行的总和,但我似乎无法绕过它或找到一种方法来做到这一点。无论如何,提前谢谢。

2 个答案:

答案 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