Запрос самых популярных вещей в bigquery? - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть ежедневные данные о доходах для нескольких мест.Вот пример:

+---------+------------+----------+------------+
|    ID   |  location  |  value   | timestamp  |
+---------+------------+----------+------------+
| 1       | LA         |  15.000  | 2019-02-12 |
| 2       | SF         |  23.000  | 2019-02-10 |
| 3       | NYC        |  9.000   | 2019-02-10 |
| 4       | LA         |  2.500   | 2019-02-09 |
+---------+------------+----------+------------+

Я хочу найти три наиболее популярных места.Вывод должен выглядеть так:

+----------+------------+----------+----------------+
|   rank   |  location  |  growth  | growth_percent |
+----------+------------+----------+----------------+
| 1        | SF         |  23.000  | 0.75           |
| 2        | LA         |  17.500  | 0.62           |
| 3        | NYC        |  9.000   | 0.43           |
+----------+------------+----------+----------------+

Я думаю, что использование функции RANK() может решить эту проблему.Я начал с:

SELECT location, 
  RANK() OVER (PARTITION BY location ORDER BY timestamp) as rank
FROM `revenues`
GROUP BY location, timestamp

Но это возвращает местоположение несколько раз.Любые мысли о том, как я могу создать такой трендовый запрос?

1 Ответ

0 голосов
/ 26 февраля 2019

Попробуйте это:

WITH `data` AS(
  SELECT 1 AS ID, 'LA' AS location, 15000 AS value, '2019-02-12' AS timestamp UNION ALL
  SELECT 2 AS ID, 'SF' AS location, 23000 AS value, '2019-02-10' AS timestamp UNION ALL
  SELECT 3 AS ID, 'NYC' AS location, 9000 AS value, '2019-02-10' AS timestamp UNION ALL
  SELECT 4 AS ID, 'LA' AS location, 2500 AS value, '2019-02-09' AS timestamp
)

SELECT
  RANK() OVER (ORDER BY SUM(value) DESC) AS rank,
  location,
  SUM(value) AS growth
FROM `data`
GROUP BY
  location

Что приводит к:

[
  {
    "rank": "1",
    "location": "SF",
    "growth": "23000"
  },
  {
    "rank": "2",
    "location": "LA",
    "growth": "17500"
  },
  {
    "rank": "3",
    "location": "NYC",
    "growth": "9000"
  }
]

Группируя местоположения, вы удаляете дублирование, наблюдаемое в вашем запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...