hiveQL, если операторы перегруппировываются в одну строку

Запрос :

select IF(type='view', count(*), 0), IF(type='click', count(*), 0)
from ad_events
where year=2013 and month=01 and day=18 and (hour=01 or hour=02)
group by type

Результат :

      _c0       _c1
0      0         0
1      0         0
2      0       1368
3      0         0
4      0         0
5      0         0
6      0         0
7      0         0
8   277917       0
9      0         0

Есть ли способ получить результат только в одной такой строке? :

      _c0       _c1
0    277917     1368

person GermainGum    schedule 26.01.2013    source источник


Ответы (2)


Хорошо, я только что сделал это во вложенном запросе:

select SUM(c), SUM(v)
from (
select tracking_id, IF(type='view', count(*), 0) AS v, IF(type='click', count(*), 0) AS c
from ad_events
where year=2013 and month=01 and day=18
group by tracking_id, type
) t2
person GermainGum    schedule 29.01.2013
comment
спасибо - я никогда раньше не думал о том, чтобы делать подсчет внутри IF. Причина, по которой вы получили так много пустых строк, заключается в том, что было (вероятно) 10 различных возможных значений для типа, и вы группируете по типу, но не выбираете его. Это не останавливает группировку, и похоже, что у вас слишком много результатов. Но об этом позаботится подзапрос. Спасибо - person TobyEvans; 27.03.2015
comment
хм, ЕСЛИ у меня не работает агрегация, я получаю выражение не в ключе GROUP BY '0' - person roman-roman; 06.05.2016

Пожалуйста, попробуйте следовать

select
   type,
   count(type) TypeCount
from ad_events
where
   year=2013 and 
   month=01 and 
   day=18 and 
   (hour=01 or 
    hour=02)
group by type
person Tu-Anh    schedule 06.02.2014