[英]How to select top records in multiple columns in Microsoft Access or SQL?
[英]SQL select TOP records partition by couples of column from multiple columns
我想得到的是所有总成本是TOP2的customer
,需要所有的属性。),
问题是SQL 用的太复杂了,有没有办法简化呢?
日期table
和我的SQL
如下所示:
区域 | 顾客 | 财产 | 成本 |
---|---|---|---|
区域1 | 库斯1 | 财产11 | 成本11 |
区域1 | 库斯1 | 财产12 | 成本12 |
区域1 | 库斯2 | 财产21 | 成本21 |
SELECT
area,
customer,
property,
SUM(cost) AS cost
FROM
table
WHERE
customer IN
(SELECT
f.customer
FROM
(SELECT
p.area,
p.customer,
ROW_NUMBER() OVER(PARTITION BY area ORDER BY cost) AS number,
p.cost
FROM
(SELECT
area,
costomer,
SUM(cost) AS cost
FROM
table
GROUP BY
costomer
)a
WHERE number <=2
)aa
)aaa
GROUP BY
area,
customer,
property
您可以使用ROW_NUMBER()
window function (或RANK()
如果您想包括领带):
select t.area, t.customer, t.properties, t.cost
from (
select area, customer, collect_set(property) properties, sum(cost) cost,
row_number() over (partition by area order by sum(cost) desc) rn
from tablename
group by area, customer
) t
where t.rn <= 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.