Как получить все уникальные комбинации (год, квартал) из списка дат?

#sql #google-bigquery

# #sql #google-bigquery

Вопрос:

Это работает как заклинание для извлечения всех уникальных комбинаций (год, месяц) из моей таблицы:

 SELECT
  STRFTIME_UTC_USEC(TIMESTAMP_TO_USEC(Date), '%Y-%m') as month,
FROM
  [Table] 
 

Он возвращает 2016-05, 2016-06, 2016-07 и т. Д

Хотите сделать то же самое для (год, квартал), но ничего не нашли. Какие-нибудь советы? Я знаю, что quarter очень сложно для sql. Спасибо!

Комментарии:

1. я использую Google big query

Ответ №1:

Объедините функцию КВАРТАЛА с функцией ГОДА:

 select concat(string(year(timestamp)),'-Q',string(quarter(timestamp))) as mquerter
from [table]
group by 1
 

Ответ №2:

Для полноты картины, используя стандартный SQL (снимите флажок «Использовать устаревший SQL» в разделе «Показать параметры» в пользовательском интерфейсе), вы можете сделать:

 SELECT DISTINCT EXTRACT(YEAR FROM t), EXTRACT(QUARTER FROM t)
FROM MyTable;
 

Например:

 WITH MyTable AS (
  SELECT t
  FROM UNNEST([TIMESTAMP '2016-01-01',
               TIMESTAMP '2016-04-03',
               TIMESTAMP '2016-02-28',
               TIMESTAMP '2017-06-25']) AS t
)
SELECT DISTINCT
  EXTRACT(YEAR FROM t) AS year,
  EXTRACT(QUARTER FROM t) AS quarter
FROM MyTable;
 ------ --------- 
| year | quarter |
 ------ --------- 
| 2016 | 1       |
| 2016 | 2       |
| 2017 | 2       |
 ------ ---------