Функция ранга в большом запросе - PullRequest
2 голосов
/ 23 марта 2020

У меня есть данные ниже в большой таблице запросов

col1    col2
abc 3/22/2020
abc 3/4/2020
xyz 3/22/2020
xyz 3/4/2020

Я пытаюсь получить вывод ниже.

col1    col2
abc 3/22/2020
xyz 3/22/2020

Для этого я попытался использовать rank () OVER Partition оговорка, но не повезло. Пожалуйста, сообщите.

select * from (select col1, col2 RANK() over (partition by col1, col2 order by col1, col2 desc) as r1 from table1) temp
where temp.r1 = 1

1 Ответ

0 голосов
/ 23 марта 2020

Вы были очень близки - правильный ответ (только небольшая корректировка вашего запроса)

#standardSQL
SELECT * EXCEPT(r1) FROM (
  SELECT col1, col2, RANK() OVER (PARTITION BY col1 ORDER BY col2 DESC) AS r1 
  FROM table1) temp 
WHERE r1 = 1

Когда выше должно работать, ниже более оптимально BigQuery'i sh опция

#standardSQL
SELECT AS VALUE ARRAY_AGG(t ORDER BY col2 DESC LIMIT 1)[OFFSET(0)] 
FROM table1 t
GROUP BY col1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...