sql – 如何选择SUM()分组后的最大值?

几天后我在大学里进行了一次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;

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...