繁体   English   中英

SQL按组查询排名前N位,N位不同

[英]SQL Top N by group query, N different

我有一个标题为Company的表,其中包含所有公司的按日期排列的价格。 我想按价格列出每个日期中排名前n位的公司,但不同日期的'n'值不同。

例如:我可能需要2014年8月21日前10名,但我可能需要2014年8月22日前20名

我在Excel中按日期列出了“ n”列表。 请建议如何去做

假设DateColDate -column,您可以使用热膨胀系数ROW_NUMBERDENSE_RANK (含并列)

WITH CTE AS
(
    SELECT c.*, rn = ROW_NUMBER() OVER ( PARTITION BY DateCol ORDER BY Price DESC )
    FROM dbo.Company c
)
SELECT * FROM CTE 
WHERE  rn > 0 AND rn <= CASE DateCol 
                          WHEN '20140821' THEN 10
                          WHEN '20140822' THEN 20
                          ELSE 10   -- default
                        END

如果它实际上是一个DateTime列,并且您必须截断时间:

如何在不考虑时间的情况下按日期时间列进行分组

让我们尝试以下脚本,

If (select COUNT(*) from Company where date=21st August 2014)>0
begin
select top 10 * from Company  where date=21st August 2014
end

If (select  COUNT(*) from Company where date= 22nd August 2014)>0
begin

select top 20 * from Company where date= 22nd August 2014
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM