2017-01-11 1 views
0

У меня есть следующие данные, возвращаемые из запроса:Комплексный запрос использовать несколько запросов, чтобы создать многостолбцовый счетчик

agent group 
----- ------ 
a1  g1 
a2  g1 
a1  g2 
a1  g2 
a2  g1 
a3  g2 

И мне нужно, чтобы получить следующее резюме следующим образом:

agent g1_total g2_total 
----- -------- -------- 
a1  1   2 
a2  2   0 
a3  0   1 

I знаю, что вы можете сделать это с помощью одного запроса только две колонки:

SELECT t1.agent, COUNT(t1.agent) 
FROM t1 
GROUP BY agent 

Но проблема в том, что мне нужно получить вторую таблицу из-за того, что финальная программа (сценарий) должна получить вторую таблицу для создания статистики. Есть ли способ сделать это?

ответ

1

Вы ищете условную агрегацию?

SELECT t1.agent, COUNT(t1.agent) as total_cnt, 
     SUM(group = 'g1') as g1_cnt, 
     SUM(group = 'g2') as g2_cnt 
FROM t1 
GROUP BY t1.agent; 
+0

Wow @Gordon Linoff! Все прошло отлично! Я никогда не использовал эту клаузулу (SUM (col = 'value')) Я не понимаю, что это за ее мощь, которую вы назвали «условной агрегацией», но я буду очень благодарен вам, если вы пришлете мне ссылку или объяснение о его мощном и о том, какие применения могут нам помочь! В документации mysql я не нашел ничего полезного в этом. БОЛЬШОЕ СПАСИБО! – mp3man

Смежные вопросы