【发布时间】:2016-02-29 04:14:58
【问题描述】:
我有一个表格,我需要从中计算一些值的总和,然后取每个总和的最大值。 我的代码如下:
SELECT q1.prod_code, q1.cust_code, MAX(q1.total_sum)
FROM (SELECT k2.prod_code, k2.cust_code, SUM(k2.price) AS total_sum FROM reservation AS k2 GROUP BY k2.prod_code, k2.cust_code) AS q1
GROUP BY q1.prod_code
从上面我得到了几乎正确的结果。 我必须得到:
产品代码 |客户代码 |总和
1001 | 10002 | 75
1002 | 10005 | 209
1003 | 10005 | 350
1004 | 10002 | 650
但我得到的不是这个:
产品代码 |客户代码 |总和
1001 | 10001 | 75
1002 | 10001 | 209
1003 | 10003 | 350
1004 | 10001 | 650
实际上,cust_code 是每个单独 prod_code 的子查询中的第一个值。
你知道可能出了什么问题吗?
【问题讨论】:
-
我相信你的问题在于你的外部
group by。Mysql允许这样做,但大多数其他数据库不允许这样做。它基本上是返回一个随机的cust_code。您需要重新加入同一查询才能获得正确的查询。 -
这可能是,但是如何将子查询与外部查询结合起来?