计数和分组

时间:2011-03-28 06:00:09

标签: mysql

我正在尝试对数据库中的信息进行分组和计数。

我有这些数据:

column_a | column_b
-------------------
A        | 1
A        | 2
A        | 2
B        | 3
B        | 3
A        | 3
B        | 3

我希望数据创建一个列,将与column_a的值匹配的行数计入a_total。然后我想将column_b值组合在一起以获得A类。然后,数据应按a_total降序输出,然后按column_b降序输出。

我想要这个输出:

column_a | column_b | a_total | b_total
---------------------------------------
A        | 3        | 4       | 1
A        | 2        | 4       | 2
A        | 1        | 4       | 1
B        | 3        | 3       | 3

到目前为止我得到了什么......

到目前为止,我已SELECT column_a, column_b, COUNT(*) AS b_total FROM this_table GROUP BY column_a, column_b ORDER BY column_b DESC, b_total DESCcolumn_b与正确的b_total放在一起,但我不确定如何将column_a的总数转换为a_total在同一个查询中。

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:2)

CREATE DATABASE test;
USE test;
CREATE TABLE t ( a VARCHAR(5), b INT );
INSERT t VALUE ('A', 1),('A', 2),('A', 2),('B', 3),('B', 3),('A', 3),('B', 3);

/ *查询* /

SELECT xx.a , xx.b , yy.a_total , zz.b_total
FROM
  (SELECT DISTINCT a, b FROM t) xx 
  INNER JOIN (SELECT COUNT(a) AS a_total, a FROM t GROUP BY a) yy 
    ON xx.a = yy.a 
  INNER JOIN (SELECT COUNT(a) AS b_total , a , b FROM t GROUP BY a, b) zz
    ON (zz.a = xx.a AND zz.b = xx.b)