2014-10-23 3 views
1

У меня возникла проблема с большим запросом Google. В качестве примера я буду использовать общий набор данных shakespear. Я хочу получить максимум word_count из всех строк. И принадлежность к корпусу. С обычным sql это будет работать.Группа Google Bigquery только одним элементом, но выбор нескольких

SELECT MAX(word_count) as w, corpus 
FROM [publicdata:samples.shakespeare] 

Но Google BigQuery хочет всех не-агрегатов ЕВ в GROUP BY, как это:

SELECT MAX(word_count) as w, corpus 
FROM [publicdata:samples.shakespeare] 
GROUP BY corpus 

Но тогда я получить максимальную word_count каждого корпуса. Я хочу только один результат, как:

w corpus 
995 hamlet 

Пожалуйста, помогите мне, я застрял

ответ

1

простой способ сделать это состоит в использовании скалярный подзапрос в ИНЕКЕ , т.е.

SELECT word_count, corpus FROM [publicdata:samples.shakespeare] 
WHERE word_count = (SELECT MAX(word_count) FROM [publicdata:samples.shakespeare])
0

Никогда не ум нашел:

SELECT r.w, s.corpus 
FROM (SELECT MAX(word_count) as w 
     FROM [publicdata:samples.shakespeare]) as r 
INNER JOIN [publicdata:samples.shakespeare] as s 
ON r.w == s.word_count 
Смежные вопросы