Sql 如何在两种不同的条件下划分一列的和?

Sql 如何在两种不同的条件下划分一列的和?,sql,hive,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

假设我有三列,一列表示日期,一列表示值,一列表示某个类别。我可以通过以下代码获得按日期分组的值的总和

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)),或者简单地说,等于具有该条件的值的比例。有没有一种方法可以在一个查询中实现这一点?谢谢大家!

您可以在聚合函数(如
SUM
)中使用
CASE
条件

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