我想编写一个查询,只允许我获取我想要的特定数据,仅此而已。
我们将以电视为例。我有三个品牌的电视,我想看看每个品牌的销量前十名。我只想返回 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 个。
我想看到的是这样的:
品牌:型号:销售
索尼:x10:20
索尼:X20:18
索尼:X30:10
VISIO:A40:40
VISIO:A20:10
这是一个过于简单的示例,实际上我需要进行 20-50 次摸索,并且希望避免下载所有数据并使用 Pivot 功能。