作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下苹果采摘完成的参与者表。我有一张 table ,可以看到所有参与者以及他们采摘的苹果数量。
现在我想要一个表格,其中仅显示前 3 个,其余的将分组在“其他”下,并且采摘的苹果总数应与其他苹果相对应显示
我已经创建了一个表,其中包含所有 id 和收集的苹果总数
declare @t table
(
id int,
Apples_picked int
)
insert into @t
select 1,10
union
select 2,12
union
select 3,3
union
select 4,15
union
select 5,23
上表所需的输出
ID Name Apples picked
5 winner 23
4 2nd 15
2 3rd 12
Others 13
我不知道如何添加第三个之后的所有内容,并总结任何指导,非常感谢
最佳答案
;WITH cte AS (
SELECT *, ROW_NUMBER() OVER (ORDER BY Apples_picked DESC) rn
FROM @t
)
SELECT ID,
CASE rn WHEN 1 THEN 'Winner' WHEN 2 THEN '2nd' WHEN 3 THEN '3rd' END AS Name,
cte.Apples_picked
FROM cte
WHERE rn <= 3
UNION ALL
SELECT NULL, 'Others', SUM(apples_picked)
FROM cte
WHERE rn > 3
返回:
ID Name Apples_picked
5 Winner 23
4 2nd 15
2 3rd 12
NULL Others 13
关于sql - 如何对前 3 行之后的值求和并将它们分组到其他行下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56738245/
我是一名优秀的程序员,十分优秀!