В Hive есть таблица со следующими данными.Что я пытаюсь поиграть с:
A B C D
==============
76 5 0.6 107777
78 5 0.5 107777
79 5 0.5 107777
79 5 0.5 107777
80 5 0.5 107777
210 5 0.5 107777
211 5 0.5 107777
213 5 0.5 107777
316 5 0.5 107777
316 5 0.5 107777
76 7 0.5 102997
78 7 0.5 102997
79 8 0.5 102997
79 8 0.5 102997
80 9 0.5 108997
80 9 0.5 108997
80 9 0.5 108997
Need to count the 'B and D' when B>4 and C is not same for B and D.
Ожидаемый O / P:
Здесь ищем значения, где значение в 'C' отсутствует для того же значения в 'А 'и' Б '.Наряду с отображением повторяющихся значений (более 1), присутствующих в таблице.
Value in 'C' is not present for the same value in 'A' and 'B':
Это означает, что
A B C
=====
76 5 0.6 => OK
78 5 0.5 => OK
79 5 0.5 => OK
79 5 0.5 => NOT OK (As C=0.5 shouldn't have repetitive value for same A and B value)
80 5 0.5 => OK.....
A B C D
==============
79 5 0.5 107777
316 5 0.5 107777
79 8 0.5 102997
80 9 0.5 108997
80 9 0.5 108997
Count: 5
Был в состоянии написать запрос для первой части, но не получитьлюбой прорыв для оставшейся части:
SELECT A,B,C,D FROM DB.TABLE1 WHERE B >1;
, но не понимаю, как писать для последней части:
count the 'B and D' when B>4 and C is not same for B and D.
Любое предложение по этому вопросу будет действительно полезным.
Update_1:
Попробовал следующее:
SELECT A,B,C,D FROM (SELECT * FROM TABLE1 WHERE B >4) t1 GROUP BY B,D HAVING countnum>1 LIMIT 20;
, но получил ошибку:
FAILED: SemanticException [Error 10025]: Line 1:197 Expression not in GROUP BY key '1'
hive>