在我学习SQL的旅程中,我在我的旧数据库上编写了各种查询,但进入更复杂的事情,我想确保我没有过度设计这一点。我有一个表代理,不同的代理提供不同的城市价格。多个代理商可以为同一城市提供服务,每个代理商都有不同的价格。我想运行一个查询,它将返回雇用任何给定城市的所有代理的总成本,按最昂贵的城市排序。
WITH orderedPrices AS (
SELECT SUM(agtFMPrice)
OVER (PARTITION BY agtCity)
AS IX FROM Agent)
SELECT IX
FROM orderedPrices
ORDER BY IX DESC
我发现在不使用orderedPrices返回的视图的情况下,它不会对价格进行排序(我假设它是一个聚合函数,或者不管它们叫什么)。我是以我所能做到的最好的方式来做这件事,还是可以简化它?
另外,如果你觉得特别无聊,请继续给我一个新的任务/查询来做这个表。我可以用这个练习。
发布于 2012-04-10 10:35:53
您用英语编写的内容似乎与您用SQL编写的不太匹配。
英语:
每个City
SQL:
每个Agent
AgentID | agtCity | agtFMPrice
---------+---------+------------
1 | 1 | 10
2 | 1 | 20
3 | 2 | 30
4 | 2 | 10
5 | 2 | 25
Results of SQL version Results of English version
------------------------ ----------------------------
30 30
30 65
65
65
65
如果你想要英文版,我会这么做...
SELECT
agtCity,
SUM(agtFMPrice) AS IX
FROM
Agent
GROUP BY
agtCity
ORDER BY
SUM(agtFMPrice) DESC
为了提高性能,该表可以(应该?)我也有一个关于(agtCity)
的索引
https://stackoverflow.com/questions/10086972
复制相似问题