我正在尝试对数据库中的信息进行分组和计数。
我有这些数据:
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 DESC
将column_b
与正确的b_total
放在一起,但我不确定如何将column_a
的总数转换为a_total
在同一个查询中。
任何帮助都会很棒!
答案 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)