sql - 如何选择 SUM() + Group By 之后的最大值?

标签 sql group-by 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;

关于sql - 如何选择 SUM() + Group By 之后的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9441592/

相关文章:

codeigniter group_by 只返回第一行

sql-server - SQL Server : how can I get the correct DB size from sys. master_files?

java - 从SQL查询转化为HQL查询问题

SQL服务器: Linked-servers without linking servers?

sql - 如何在firebird中使用GROUP BY

mysql - 如何在一个查询中组合多个 SUM?

WHERE 子句中的 mysql SUM()

algorithm - 最小列总和差异是多少?

php - Mysql获取数组错误

asp.net - 根据另一个表中的数据从表中选择行