在一列中对具有相同数据的行进行分组,并将其相关数据汇总在另一列中 [ORACLE SQL]

Posted

技术标签:

【中文标题】在一列中对具有相同数据的行进行分组,并将其相关数据汇总在另一列中 [ORACLE SQL]【英文标题】:group rows with equal data in one column and summing its related data in another column [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 【参考方案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;

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

【讨论】:

以上是关于在一列中对具有相同数据的行进行分组,并将其相关数据汇总在另一列中 [ORACLE SQL]的主要内容,如果未能解决你的问题,请参考以下文章

如何在一列中对数据进行分组?

Excel - 合并具有共同值的行并将差异连接在一列中

如何根据分组将字符串组合在一列中

查找一列中具有相同值而另一列中具有其他值的行?

我如何基于一定值在jupyter中对数据进行分组?

如何在R中的一列中添加具有不同值的新行