SELECT c.STATE, c.CITY, SUM(s.QTY * s.SALEPRICE)
FROM DWSALE s
INNER JOIN DWCUST c
ON s.dwcustid = c.dwcustid
GROUP BY c.STATE, c.CITY
ORDER BY c.STATE;
上面的当前查询显示了每个城市的销售总额(销售额=数量*销售价格),同时还显示了其所在的州。
客户(在DWCUST中找到)住在城市和州。 销售额记录在DWSALE中并保留销售信息。
我需要查询来显示各个州的EACH销售额最高的城市。 我不知道该怎么做。
感谢任何帮助!
答案 0 :(得分:2)
您可以使用ROW_NUMBER()
或RANK()
来获得所需内容:
SELECT state, city, total
FROM (SELECT c.STATE, c.CITY, SUM(s.QTY * s.SALEPRICE) as total,
ROW_NUMBER() OVER (PARTITION BY c.STATE ORDER BY SUM(s.QTY * s.SALEPRICE)) as seqnum
FROM DWSALE s INNER JOIN
DWCUST c
ON s.dwcustid = c.dwcustid
GROUP BY c.STATE, c.CITY
) sc
WHERE seqnum = 1
ORDER BY STATE;
如果您想要关联(同一州的多行),请使用RANK()
代替ROW_NUMBER()
。
答案 1 :(得分:1)
with statecitytotal as
(SELECT c.STATE, c.CITY, SUM(s.QTY * s.SALEPRICE) total
FROM DWSALE s
INNER JOIN DWCUST c
ON s.dwcustid = c.dwcustid
GROUP BY c.STATE, c.CITY
ORDER BY c.STATE)
select * from (select state, city, total, rank() over(partition by state order by total desc) rnk from statecitytotal) where rnk=1
但是,如果2个城市的总数相同,则显示两个城市