0

我正在尝试从数据集中返回每个月的最大天数。我说 max 是因为它基于周一至周五的上传。因此,如果该月的最后一天是星期六(比如 2019 年 10 月 31 日),那么最后上传的日期将是星期五(2019 年 10 月 30 日)。

我试过 select max(date) from my_table group by datepart('month',date);

4

3 回答 3

0

使用 snowflake_sample_date 有一个日期维度,对 MIkes 查询的小改动 .. 1--7 看起来不错

SELECT
MAX(d.d_date) FROM
tpcds_sf10tcl.date_dim d WHERE DAYOFWEEKISO(d.d_date) BETWEEN 1 AND 7 GROUP BY YEAR(d.d_date) , MONTH(d.d_date) ORDER BY MAX(d_date);

于 2019-12-04T03:02:56.207 回答
0

您可以使用dayofweekiso仅获取那些monday-friday交易。

select max(date), month(case when date) from my_table 
where dayofweekiso(date) between 1 and 5
group by year(date), month(date);
于 2019-12-04T01:07:59.433 回答
0

QUALIFY可用于动态创建排名和过滤器。因此,按年和月对分区进行排名,按日期降序将表中每个月的最后几天排名为 1。

SELECT * FROM TABLE
QUALIFY RANK() OVER(PARTITION BY YEAR(DATE), MONTH(DATE) ORDER BY DATE DESC) = 1;
于 2019-12-04T07:33:42.443 回答