gpt4 book ai didi

SQL产生前十名和其他

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

想象一下,我有一张表,显示Acme Widget的销售以及它们的销售地。生成按国家/地区分组销售的报表相当容易。找到前十名很容易,但是我想显示前十名,然后最后一行说“其他”。例如。,

Ctry  | Sales
=============
GB | 100
US | 80
ES | 60
...
IT | 10
Other | 50

我一直在寻找年龄,但似乎找不到任何帮助使我超越标准前10名。

TIA

最佳答案

我在这里尝试了其他一些解决方案,但是它们似乎有些偏离,或者订购不正确。

我尝试使用Microsoft SQL Server解决方案似乎可以正常工作:

SELECT Ctry, Sales FROM
(
SELECT TOP 2
Ctry,
SUM(Sales) AS Sales
FROM
Table1
GROUP BY
Ctry
ORDER BY
Sales DESC
) AS Q1
UNION ALL
SELECT
'Other' AS Ctry,
SUM(Sales) AS Sales
FROM
Table1
WHERE
Ctry NOT IN (SELECT TOP 2
Ctry
FROM
Table1
GROUP BY
Ctry
ORDER BY
SUM(Sales) DESC)

请注意,在我的示例中,我仅使用TOP 2而不是TOP10。这仅仅是由于我的测试数据受到更大的限制。您可以在自己的数据中轻松地用2代替10。

这是创建表的SQL脚本:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Table1](
[Ctry] [varchar](50) NOT NULL,
[Sales] [float] NOT NULL
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

我的数据如下所示:
GB  10
GB 21.2
GB 34
GB 16.75
US 10
US 11
US 56.43
FR 18.54
FR 98.58
WE 44.33
WE 11.54
WE 89.21
KR 10
PO 10
DE 10

请注意,查询结果是按Sales值汇总正确排序的,而不是按字母顺序的国家/地区代码,并且“其他”类别始终是最后一个,即使它的Sales值汇总通常会将其推到列表的顶部。

我并不是说这是最好的(阅读:最佳)解决方案,但是对于我提供的数据集来说,它似乎工作得很好。

关于SQL产生前十名和其他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1524403/

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