几天后我在大学里进行了一次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;
原文地址:https://www.jb51.cc/mssql/74733.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。