gpt4 book ai didi

sql - 前 N 个结果分组 Oracle SQL

转载 作者:行者123 更新时间:2023-12-02 21:54:53 33 4
gpt4 key购买 nike

我想编写一个查询,让我只能获取我想要的特定数据,仅此而已。

我们将以电视为例。我有三个品牌的电视,我想查看每个品牌销量前十的型号。我只想返回 30 行。一种解决方案是工会,但这很快就会变得困惑。理想情况下,会有一个按情况分组的 WHERE ROWNUM。

SELECT 
A.Brand
, A.Model
, A.Sales
FROM
( SELECT
TV.Brand
, TV.Model
, SUM(TV.SALES) AS SALES
FROM TV_TABLE as TV
ORDER BY
TV.Brand
, SALES DESC
) A
WHERE ROWNUM <10

在上面的代码中,我将从内部查询中获取前 10 个总结果,但不会从每个分组中获取 10 个结果。

我想看到的是这样的:

Brand: Model: Sales
Sony: x10: 20
Sony: X20: 18
Sony: X30: 10
VISIO: A40: 40
VISIO: A20: 10

这是一个过于简单化的示例,实际上我需要进行 20-50 次摸索,并且希望避免下载所有数据并使用 Pivot 功能。

最佳答案

 select Brand, Model, SALES
from(
select Brand, Model, SALES,row_number()over(partition by Brand order by SALES desc) rn
from (
SELECT TV.Brand, TV.Model,SUM(TV.SALES) AS SALES,
FROM TV_TABLE as TV
group BY TV.Brand,TV.Model
)a
)b
where rn <= 10

关于sql - 前 N 个结果分组 Oracle SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17930245/

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