2015-04-14 3 views
0

У меня есть таблица с тремя полями :.Группа Mysql по этому счету имеет разную логику

field1 - field2 - field3 

поле1 является идентификатор;
field2 - дата;
Поле3 имеет только два возможных значения («ac» и «re»).

мне нужно знать, если это возможно, чтобы иметь запрос с group by, что даст мне результаты, показанные в конце:

select field2 
     , count(total per date) 
     , Count(where field3 = "re") 
    from myTable 
group by 1; 

Если моя таблица:

field1 - field2 - field3 
========================= 
item1 - date1 - "ac" 
item2 - date1 - "re" 
item3 - date1 - "re" 
item4 - date2 - "re" 
item5 - date2 - "ac" 
item6 - date3 - "ac" 

результат будет следующим:

- date1 - 3 - 2 
- date2 - 2 - 1 
- date3 - 1 - 0 

ответ

0

Вы можете u се условное sumcase с утверждением:

select field2 
    , count(field3) 
    , sum(case when field3 = 're' then 1 else 0 end) 
from myTable 
group by field2 

или даже короткий, используя if:

select field2 
    , count(field3) 
    , sum(if(field3 = 're', 1, 0)) 
from myTable 
group by field2 

или просто:

select field2 
    , count(field3) 
    , sum(field3 = 're') 
from myTable 
group by field2 
+0

2-й Anth третий способ не работает –

1
SELECT field2, COUNT(*), SUM(CASE WHEN field3='re' THEN 1 ELSE 0 END) as re_count 
FROM table1 
GROUP BY field2 
Смежные вопросы