как получить строки с последней датой? - PullRequest
1 голос
/ 30 апреля 2020

У меня есть эта таблица в BigQuery

country, date, confirmed    
Afghanistan, 2020-03-16, 21
Afghanistan, 2020-03-17, 22
Afghanistan, 2020-03-18, 22
Albania, 2020-03-16, 23
Albania, 2020-03-17, 33
Albania, 2020-03-18, 38
...

, и я хотел бы показать все строки в стране с самой поздней датой, однако эта команда не работает>

SELECT * FROM таблица, где дата = max (дата)> Агрегатная функция MAX не разрешена в предложении WHERE в.

вывод должен быть:

Afghanistan, 2020-03-18, 22
Albania, 2020-03-18, 38

Есть идеи, пожалуйста?

1 Ответ

2 голосов
/ 30 апреля 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT AS VALUE ARRAY_AGG(t ORDER BY day DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY country   

, если применить к образцу данных из вашего вопроса, как в примере ниже

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'Afghanistan' country, DATE '2020-03-16' day, 21 confirmed UNION ALL
  SELECT 'Afghanistan', '2020-03-17', 22 UNION ALL
  SELECT 'Afghanistan', '2020-03-18', 22 UNION ALL
  SELECT 'Albania', '2020-03-16', 23 UNION ALL
  SELECT 'Albania', '2020-03-17', 33 UNION ALL
  SELECT 'Albania', '2020-03-18', 38 
)
SELECT AS VALUE ARRAY_AGG(t ORDER BY day DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY country

вывод

Row country         day         confirmed    
1   Afghanistan     2020-03-18  22   
2   Albania         2020-03-18  38   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...