首页 > 解决方案 > 带有子查询的 SQL 多个聚合函数

问题描述

菜鸟问题,但我希望有人可以帮助我了解我的问题的逻辑。所以我有 3 列的 SELECT 。我想计算 column1 中具有两个不同值的行,然后计算按 column2 分组的中位数。然后我想为 column1 中的不同值设置相同的值。

我该怎么做?到目前为止我有这个,但我不知道在哪里放置中值函数?

SELECT region, product, year
 (SELECT COUNT (*),
  FROM mytable
  WHERE product = dairy and product = meat) as count_dairy_meat
 (SELECT COUNT (*)
  FROM mytable
  WHERE product = veg) as count_veg

FROM mytable

GROUP BY region, product, year;

我希望结果看起来像这样

         count_dairy_meat   count_veg   Median
Region1             
Region2             
Region3             
Total               


标签: sqloraclecountpivot

解决方案


怀疑您正在寻找条件聚合。逻辑是为“meal”和“veg”生成单独的计数product是:

select
    region,
    product,
    year,
    sum(case when product = 'meal' then 1 else 0 end) count_meat,
    sum(case when product = 'veg'  then 1 else O end) count_veg
from mytable
group by region, product, year

我不知道您要计算哪个中位数。Oracle 有一个median()您可能会使用的聚合函数。


推荐阅读