【问题标题】:group rows with equal data in one column and summing its related data in another column [ORACLE SQL]在一列中对具有相同数据的行进行分组,并将其相关数据汇总在另一列中 [ORACLE SQL]
【发布时间】:2016-02-12 16:58:02
【问题描述】:

ORACLE SQL

我有一个表 CUSTOMER_UNITS

CUSTOMER_ID    UNITS_SOLD
AAAA    350
BBBB    150
CCCC    650
DDDD    250
AAAA    950
BBBB    450
CCCC    450
DDDD    350

我需要编写一个查询,将 SUM(UNITS_SOLD) 每个 CUSTOMER_ID, WHERE UNITS_SOLD >= 350 给我一个总数。所以基本上结果应该是:

CUSTOMER_ID    UNITS_SOLD
AAAA    1300
BBBB    450
CCCC    1100
DDDD    350

我厌倦了下面的代码:

SELECT
    CUSTOMER_ID
   ,SUM(UNITS_SOLD)
FROM
    (SELECT DISTINCT CUSTOMER_ID, UNITS_SOLD FROM CUSTOMER_UNITS)
WHERE UNITS_SOLD >= 350
GROUP BY CUSTOMER_ID;

但它返回一个错误; ORA-00904: "UNITS_SOLD": 标识符无效

很抱歉问这个问题,我知道它一定非常简单,但我已经尝试了至少 15 条建议,但没有成功。

【问题讨论】:

  • 我不知道你为什么使用那个子查询,但无论如何,你只需要给它一个别名:FROM (SELECT DIS......) AS T

标签: sql oracle sum


【解决方案1】:

这是为了选择大于 350 的值,使用 ..

select CUSTOMER_ID,  sum(UNITS_SOLD) 
from CUSTOMER_UNITS
group by CUSTOMER_ID
having sum(UNITS_SOLD) >= 350 ;

【讨论】:

    【解决方案2】:

    我不知道我在想什么.. 以下返回了我想要的:

    SELECT
        CUSTOMER_ID
       ,SUM(UNITS_SOLD)
    FROM
        CUSTOMER_UNITS
    WHERE
        UNITS_SOLD >= 350
    GROUP BY
        CUSTOMER_ID;
    

    感谢您的建议。我想有时候你会走上艰难的路,其实它真的很简单

    【讨论】:

      猜你喜欢
      • 2021-04-29
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2023-03-09
      • 1970-01-01
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多