根据日期列中的年份和月份进行计数
Taking Count Based On Year and Month from Date Columns
我想根据起始日期和截止日期进行计数。使用 from 和 to date 我试图计算年份和月份,然后根据月份和年份计算。有人可以建议我如何实现这个。
Database : Snowflake
你想多做少做这个的解决方法
但这里让我为您完成所有工作:
WITH data_table(start_date, end_date) as (
SELECT * from values
('2022-01-15'::date, '2022-02-12'::date),
('2021-12-25'::date, '2022-03-18'::date),
('2022-02-25'::date, '2022-03-06'::date),
('2021-10-20'::date, '2022-01-07'::date)
), large_range as (
SELECT row_number() over (order by null)-1 as rn
FROM table(generator(ROWCOUNT => 1000))
), pre_condition as (
SELECT
date_trunc('month', start_date) as month_start
,datediff('month', month_start, date_trunc('month', end_date)) as m
FROM data_table
)
SELECT
to_char(dateadd('month', r.rn, d.month_start),'MON-YY') as month_yr
,count(*) as count
FROM pre_condition as d
JOIN large_range as r ON r.rn <= d.m
GROUP BY 1;
MONTH_YR
COUNT
Jan-22
3
Dec-21
2
Feb-22
3
Oct-21
1
Nov-21
1
Mar-22
2
我想根据起始日期和截止日期进行计数。使用 from 和 to date 我试图计算年份和月份,然后根据月份和年份计算。有人可以建议我如何实现这个。
Database : Snowflake
你想多做少做这个的解决方法
但这里让我为您完成所有工作:
WITH data_table(start_date, end_date) as (
SELECT * from values
('2022-01-15'::date, '2022-02-12'::date),
('2021-12-25'::date, '2022-03-18'::date),
('2022-02-25'::date, '2022-03-06'::date),
('2021-10-20'::date, '2022-01-07'::date)
), large_range as (
SELECT row_number() over (order by null)-1 as rn
FROM table(generator(ROWCOUNT => 1000))
), pre_condition as (
SELECT
date_trunc('month', start_date) as month_start
,datediff('month', month_start, date_trunc('month', end_date)) as m
FROM data_table
)
SELECT
to_char(dateadd('month', r.rn, d.month_start),'MON-YY') as month_yr
,count(*) as count
FROM pre_condition as d
JOIN large_range as r ON r.rn <= d.m
GROUP BY 1;
MONTH_YR | COUNT |
---|---|
Jan-22 | 3 |
Dec-21 | 2 |
Feb-22 | 3 |
Oct-21 | 1 |
Nov-21 | 1 |
Mar-22 | 2 |