【发布时间】:2020-08-23 14:48:32
【问题描述】:
我有一张这样的桌子
----------------------
code sales goal
----------------------
b 7 20
b 12 20
a 9 15
c 4 3
a 4 15
我想执行一个 agg 函数以仅在“销售”列上按总和进行分组,因为“目标”列对于“代码”列中的给定值是通用的,以获得更像这样的东西
---------------------------------
code total goal
---------------------------------
b 19 20
a 13 15
c 4 3
有没有办法执行这样的事情?
SELECT code, SUM(sales) AS total, goal FROM such_table GROUP BY code
然后对列进行操作,实现以后的操作:
------------------------------------------------------
code sum(sales) intact(goal) achvd(100*sum/goal)
------------------------------------------------------
b 19 20 95
a 13 15 86.6
c 4 3 133.3
【问题讨论】:
-
如果您确定每个代码的目标是相同的,您可以在您的
select语句中输入MAX(goal);如果您不确定,请将code, goal放入您的group by声明中 -
您使用的是哪种 SQL 风格? sql server、mySQL 等你能标记一下吗?同样在您的示例中,
b的值如何可以是19?应该是21 -
我不明白
intact(goal)应该是什么。 -
嗨@a_horse_with_no_name 这样的列代表自己,未更改或完整,抱歉造成混淆
-
嗨 @zealous 我正在使用 Apache Druid,但有一些限制,例如无法使用
JOIN函数,就像在b值中一样,我需要将其相加7 + 12由于agg函数SUM执行操作
标签: sql group-by aggregate-functions druid