2011-03-28 68 views
1

我想分組和計數來自數據庫的信息。計數和分組

我有這樣的數據:

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

刪除PHP標籤,無關用PHP。 – 2011-03-28 06:39:53

回答

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)