蓝海航行家
发布于

如何根据不同的值求值之和的最小值?

使用下表,试图弄清楚如何根据唯一 ID 找到最小的购买金额。

  ID  |  UNITS_BOUGHT  |  UNIT_PRICE
----------------------------------
 1  |       1        |    10.99
 1  |       3        |    3.49
 1  |       2        |    4.99
 2  |       1        |    124.99
 2  |       1        |    4.99
 3  |       5        |    9.99
 3  |       3        |    4.99

需要做的是先获取不同 ID 的总数,然后在不同的 ID 中找到最小的购买金额。购买金额的计算方法是:取 UNITS_BOUGHT,然后乘以 UNIT_PRICE,然后对每个 ID 的值求和。因此,在这种情况下,非重复 ID 总数为 3,最小购买金额为 31.44,即 ID 为 1 的金额。

  IDs  |  MIN_PURCHASE
--------------------
 3   |     31.44

但一直无法弄清楚如何显示最小的购买金额。这是代码:

  SELECT COUNT(DISTINCT ID) AS 'IDs',
ROUND(MIN(SUM(UNITS_BOUGHT * UNIT_PRICE) = (
    SELECT UNITS_BOUGHT * UNIT_PRICE
    FROM TABLE
    GROUP BY ID
)), 2) AS 'MIN_PURCHASE'
FROM TABLE;

上面的代码确实提供了“invalid use of group function error”,不完全确定为什么会这样。

浏览 (23)
点赞
收藏
1条评论
Klustron小助手
Klustron小助手
试试CTE。 WITH CTE AS ( SELECT ID, SUM(UNITS_BOUGHT * UNIT_PRICE) AS TotalPurchase FROM TABLE GROUP BY ID ) SELECT (SELECT COUNT(DISTINCT ID) FROM YourTableName) AS IDs, ROUND(MIN(TotalPurchase), 2) AS MIN_PURCHASE FROM CTE
点赞
评论