gpt4 book ai didi

sql - 每个月的顶部和底部销售

转载 作者:行者123 更新时间:2023-12-01 08:18:04 24 4
gpt4 key购买 nike

如果我有如下数据:

sale_id     sale_date
1 1/5/2010
2 1/8/2010
3 1/16/2010
4 1/28/2010
5 2/2/2010
6 2/21/2010
7 2/29/2010
8 3/3/2010

我想要每个月的第一个和最后一个(每月 2 个或更少的记录):

所需的输出:
sale_id     sale_date
1 1/5/2010
4 1/28/2010
5 2/2/2010
7 2/29/2010
8 3/3/2010

我认为慢的一种方法是:
select * from table o
where sale_date in (select max(sale_date) from table where datepart(month+year of sale_date) = datepart(month+year of o.sale_date), select min(sale_date) from table where ... )

最佳答案

WITH T
AS (SELECT sale_id,
sale_date,
ROW_NUMBER() OVER (PARTITION BY Year(sale_date), MONTH(sale_date)
ORDER BY sale_date ASC) RN,
ROW_NUMBER() OVER (PARTITION BY Year(sale_date), MONTH(sale_date)
ORDER BY sale_date DESC) RN2
FROM YourTable)
SELECT sale_id,
sale_date
FROM T
WHERE RN = 1
OR RN2 = 1

关于sql - 每个月的顶部和底部销售,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5435714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com