如何在两个不同的条件下划分列的总和?

时间:2018-07-16 19:23:49

标签: sql hive

说我有三列,一列是日期,一列是值,一列是某种类别。我可以使用以下代码获取按日期分组的值的总和

SELECT date, SUM(values) from table WHERE category = condition GROUP BY date

我可以用

得到所有值的总和。
SELECT date, SUM(values) from table GROUP BY date

我希望SUM(values)列的值等于(SUM(values),其中category = condition)/(SUM(values)),或者用简单的话来说,等于该条件下值的比例。有没有办法在一个查询中做到这一点?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以在CASE之类的集合函数中使用SUM条件。

SELECT 
date, 
(
  SUM(CASE WHEN category = condition Then values ELSE 0)
  / SUM(Values)
) as proportion
from table 
GROUP BY date