0

我想计算一个分组在查询中出现的次数。

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

4

2 回答 2

1

您的查询(适当放置括号)执行您想要的操作:

SELECT COL1, COL2, count(*)
FROM TABLE
GROUP BY COL1, COL2;

如果您想要一列的总和,请使用该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;
于 2013-09-09T10:48:07.133 回答
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小提琴

或者没有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小提琴

于 2013-09-09T11:04:45.817 回答