2011-03-28 5 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 по убыванию, а затем по столбцу_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. –

ответ

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) 
Смежные вопросы