/ / Wybór wartości z tabeli na maksimum (kolumna) w HQL - gałęzi, hql, słów zarezerwowanych

Wybór wartości z tabeli na max (kolumna) w HQL - hive, hql, reserved-words

Jestem dość nowy w HQL i wciąż próbuję wymyślićmoja droga przez składnię. Mam tabelę „zdobywającą punkty” z playerID i Game Winning Goals (GWG). Chcę wyświetlić identyfikatory graczy, którzy mają maksymalną GWG. To jest moje zapytanie:

select playerid as ID from scoring where gwg = ("select max(scoring.gwg) from scoring");

Nie otrzymuję danych wyjściowych, chociaż Hive wypisuje nazwę kolumny. Ale kiedy na stałe wpisuję „gwg = 16”, otrzymuję dane wyjściowe, których potrzebuję. Jakakolwiek rada? Pracuję nad Hortonworks 2.3.2.

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz spróbować tego

select playerid, max(scoring.gwg) from scoring group by playerid;

Oto kolejny

select playerid, max(scoring.gwg) as maxScore from scoring
group by playerid order by maxScore desc;

Powyższe da identyfikator gracza w malejącej kolejności, tzn. Ten z maksymalną liczbą punktów będzie na górze.


2 dla odpowiedzi nr 2

Można to zrobić na kilka sposobów. Uzyskaj maksimum zliczeń i przefiltruj playerid z maksymalnym gwg

select playerid
from scoring
group by playerid
having count(*) = ( select max(c) from
(
select playerid,count(*) c
from scoring
group by playerid
) a
)

Lub Zdobądź liczby i uporządkuj je malejąco, uzyskując najwyższy rząd

select playerid, count(*) as cnt
from scoring
group by playerid
order by cnt desc
limit 1;

0 dla odpowiedzi № 3

Myślę, że wszystko, czego potrzebujesz, to proste zapytanie

select playerid,max(scoring.gwg) as max from scoring group by playerid order by max desc

Hive nie obsługuje pod-zapytań.