sql – 如何选择SUM()分组后的最大值?
发布时间:2021-03-30 21:47:16 所属栏目:MsSql 来源:互联网
导读:几天后我在大学里进行了一次SQL期末考试,我的查询让我发疯了!我知道这是一个愚蠢的问题,但我刚刚开始,无法搞清楚. 所以,有基本的2个表,客户端和订单. Client Orders --------- --------- PK Client_Id PK Order_Id Name Client_Id FK
|
几天后我在大学里进行了一次SQL期末考试,我的查询让我发疯了!我知道这是一个愚蠢的问题,但我刚刚开始,无法搞清楚. 所以,有基本的2个表,客户端和订单. Client Orders
--------- ---------
PK Client_Id PK Order_Id
Name Client_Id FK
Order_Total
Date
现在,他们要我“列出2011年购买量最大的客户名称” 因此,对于我的想法,这需要一方面,我从2011年开始全部按Order_Total和Group by Client,然后从该表中选择具有MAX()总和的客户端,然后仅显示名称那个客户.问题是我无法弄清楚如何将所有这些放在一个查询中. 希望有人可以帮忙! 谢谢大家的快速回复!我真的很感动! 现在,我并不是说挑剔或任何东西,但为了防止我的老师不接受“限制”或“选择顶部”声明,有没有办法在没有这些的情况下进行此查询? 编辑:从注释移植的原始代码尝试: SELECT C.NAME FROM CLIENTS C,ORDERS O WHERE O.CLIENT_ID = C.CLIENT_ID AND O.DATE BETWEEN '1/1/2011 00:00:00.000' and '12/31/2011 23:59:59.999' HAVING SUM(O.ORDER_TOTAL) >= ALL (SELECT SUM (O2.ORDER_TOTAL) FROM ORDER O2 GROUP BY O2.CLIENT_ID) 解决方法SELECT T.X (SELECT C.NAME X,SUM(O.ORDER_TOTAL) FROM CLIENT C,ORDERS O WHERE C.CLIENT_ID = O.CLIENT_ID AND YEAR(O.DATE) = 2011 GROUP BY O.CLIENT_ID ORDER BY 2 DESC LIMIT 1) T; (编辑:哈尔滨站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQL Server自定义异常raiserror使用示例
- sqlserver对字段的添加修改删除、以及字段的说明
- 非常好用的sql语句(日常整理)
- SQL Server中聚合历史备份信息对比数据库增长的方法
- Sql Server 创建数据库脚本Create DATABASE
- 数据库 – LevelDB是否支持热备份(或等效)?
- ROW_NUMBER SQL Server 2005的LIMIT功能实现(ROW_NUMBER()排
- SqlServer修改数据库文件及日志文件存放位置
- Select count(*)、Count(1)和Count(列)的区别及执行方式
- sql server中随机函数NewID()和Rand()
