获取两个日期之间的日期类型计数
Get count of day types between two dates
我正在尝试获取我在 BigQuery 标准 sql 中未找到解决方案的两个日期之间的周数。我已经按照已发布的示例尝试了 BQ sql 日期函数 DATE_DIFF(date_expression_a, date_expression_b, date_part)
,但没有显示结果。
例如,我有两个日期 2021-02-13
和 2021-03-31
,我想要的结果是:
MON
TUE
WED
THUR
FRI
SAT
SUN
6
6
6
6
7
7
7
您可以执行以下操作:
SELECT
CASE EXTRACT(DAYOFWEEK
FROM
dates)
WHEN 1 THEN 'MON'
WHEN 2 THEN 'TUE'
WHEN 3 THEN 'WED'
WHEN 4 THEN 'THU'
WHEN 5 THEN 'FRI'
WHEN 6 THEN 'SAT'
WHEN 7 THEN 'SUN'
END
AS day_of_week,
COUNT(*) AS day_count
FROM
UNNEST(GENERATE_DATE_ARRAY("2021-02-13", "2021-03-30")) AS dates
GROUP BY 1
重要的部分是 GENERATE_DATE_ARRAY
函数,它将 return 您感兴趣的日期之间的所有日期。UNNEST
将 return 一行每个日期(而不是所有日期数组的一行)。
从那里,您可以使用 BQ 日期函数提取星期几,并使用 GROUP BY
day_of_week.
计算出现的次数
以上查询给出以下结果:
考虑以下方法
with your_table as (
select date
from unnest(generate_date_array("2021-02-13", "2021-03-30")) AS date
)
select * from your_table
pivot (count(*) for format_date('%a', date) in ('Mon','Tue','Wed','Thu','Fri','Sat','Sun'))
有输出
或者你可以简单地做
select
format_date('%a', date) day_of_week,
count(*) counts
from your_table
group by day_of_week
有输出
我正在尝试获取我在 BigQuery 标准 sql 中未找到解决方案的两个日期之间的周数。我已经按照已发布的示例尝试了 BQ sql 日期函数 DATE_DIFF(date_expression_a, date_expression_b, date_part)
,但没有显示结果。
例如,我有两个日期 2021-02-13
和 2021-03-31
,我想要的结果是:
MON | TUE | WED | THUR | FRI | SAT | SUN |
---|---|---|---|---|---|---|
6 | 6 | 6 | 6 | 7 | 7 | 7 |
您可以执行以下操作:
SELECT
CASE EXTRACT(DAYOFWEEK
FROM
dates)
WHEN 1 THEN 'MON'
WHEN 2 THEN 'TUE'
WHEN 3 THEN 'WED'
WHEN 4 THEN 'THU'
WHEN 5 THEN 'FRI'
WHEN 6 THEN 'SAT'
WHEN 7 THEN 'SUN'
END
AS day_of_week,
COUNT(*) AS day_count
FROM
UNNEST(GENERATE_DATE_ARRAY("2021-02-13", "2021-03-30")) AS dates
GROUP BY 1
重要的部分是 GENERATE_DATE_ARRAY
函数,它将 return 您感兴趣的日期之间的所有日期。UNNEST
将 return 一行每个日期(而不是所有日期数组的一行)。
从那里,您可以使用 BQ 日期函数提取星期几,并使用 GROUP BY
day_of_week.
以上查询给出以下结果:
考虑以下方法
with your_table as (
select date
from unnest(generate_date_array("2021-02-13", "2021-03-30")) AS date
)
select * from your_table
pivot (count(*) for format_date('%a', date) in ('Mon','Tue','Wed','Thu','Fri','Sat','Sun'))
有输出
或者你可以简单地做
select
format_date('%a', date) day_of_week,
count(*) counts
from your_table
group by day_of_week
有输出