Группа в группе в BigQuery Standard SQL - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть следующая таблица:

| item | day_of_purchase |
|------|-----------------|
| A    | 1               |
| B    | 2               |
| C    | 3               |
| A    | 1               |
| C    | 1               |

Я хочу посчитать, сколько каждого предмета у нас на каждый день. Я не могу использовать GROUP BY day_of_purchase, так как это будет группа A и C в этом случае. Поэтому мне нужно как-то сгруппировать элементы по day_of_purchase, но только по их собственному типу.

Таблица результатов будет выглядеть так:

| item | day_of_purchase | count |
|------|-----------------|-------|
| A    | 1               | 2     |
| B    | 2               | 1     |
| C    | 1               | 1     |
| C    | 3               | 1     |

Ответы [ 2 ]

2 голосов
/ 10 февраля 2020

GROUP BY принимает несколько столбцов; просто разделите их запятыми. Например:

select item, day_of_purchase, count(*)
from t
group by item, day_of_purchase

См. Облако Google - Стандартный SQL Синтаксис запроса .

0 голосов
/ 10 февраля 2020

Один вариант будет использовать

<window_function>
  OVER (
      [PARTITION BY <expr>]
      [ORDER BY <expr> [ASC | DESC]]
      [<window-frame-clause>]
     )

, где <window function> равно COUNT(*), в этом случае

SELECT DISTINCT item, day_of_purchase,
       COUNT(*) OVER ( PARTITION BY item, day_of_purchase ) AS "count"
  FROM tab;

без использования предложения GROUP BY.

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