首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >这是不是执行SELECT和ORDER BY查询的最有效方法?

这是不是执行SELECT和ORDER BY查询的最有效方法?
EN

Stack Overflow用户
提问于 2012-04-10 10:24:27
回答 1查看 65关注 0票数 1

在我学习SQL的旅程中,我在我的旧数据库上编写了各种查询,但进入更复杂的事情,我想确保我没有过度设计这一点。我有一个表代理,不同的代理提供不同的城市价格。多个代理商可以为同一城市提供服务,每个代理商都有不同的价格。我想运行一个查询,它将返回雇用任何给定城市的所有代理的总成本,按最昂贵的城市排序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WITH orderedPrices AS (
    SELECT SUM(agtFMPrice) 
    OVER (PARTITION BY agtCity) 
    AS IX FROM Agent)
SELECT IX 
FROM orderedPrices 
ORDER BY IX DESC

我发现在不使用orderedPrices返回的视图的情况下,它不会对价格进行排序(我假设它是一个聚合函数,或者不管它们叫什么)。我是以我所能做到的最好的方式来做这件事,还是可以简化它?

另外,如果你觉得特别无聊,请继续给我一个新的任务/查询来做这个表。我可以用这个练习。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-10 10:35:53

您用英语编写的内容似乎与您用SQL编写的不太匹配。

英语:

每个City

  • One字段每条记录一条
  • 记录,显示所有关联座席的总成本

SQL:

每个Agent

  • One字段每条记录一条
  • 记录,显示同一城市内所有座席的总成本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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

如果你想要英文版,我会这么做...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT
  agtCity,
  SUM(agtFMPrice) AS IX
FROM
  Agent
GROUP BY
  agtCity
ORDER BY
  SUM(agtFMPrice) DESC

为了提高性能,该表可以(应该?)我也有一个关于(agtCity)的索引

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10086972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文