sql - Redshift:我尝试使用 Union,但它返回 3 列而不是 4 列。我该怎么办?
问题描述
我必须找到在特定国家和特定日期(overall_streams)发生的流,然后对于相同的国家和日期,我必须找到特定产品的流。
换句话说,我试图将产品的表现与在这个地点和时间发生的流的总数进行比较。
出于这个原因,我尝试使用 UNION(我所做的子查询不会给出正确的结果)。
这是我的简化代码:
Select age_group, gender, sum(streams) as product_streams
From t1
Where product='A'
And country= 'US'
And date= '1st week of July'
Group by 1,2
Union
Select age_group, gender, sum(streams) as overall_streams
From t1
Where country='US'
And date='1st week of July'
Group by 1,2
请注意,第二个查询的不同之处在于我没有指定产品。
我得到的结果是 3 列。第三列名为“product_streams”,它在product_streams 和overall_streams 之间交替。
例子:
0-18 f 100
0-18 f 560
0-18 m 45
0-18 m 398
结果是正确的,我只想有 4 列而不是 3 列。像这样:
age_group gender product_streams overall_streams
有任何想法吗?
解决方案
我认为你想要条件聚合:
Select age_group, gender,
sum(streams) as overall_streams
sum(case when product = 'A' then streams else 0 end) as product_streams
From t1
Where country = 'US' and
date = '1st week of July'
group by age_group, gender;
推荐阅读
- javascript - Array.prototype.includes 函数如何比较对象
- java - 在 MYSQL 或 BigDecimal Java 中分钱
- php - 带有easyadmin的Symfony - 主页被重定向到管理页面
- angular - 如何使用角度材料将数据表导出为pdf
- python - 从数据框熊猫中删除数据框
- java - 将字符串替换为空
- docker - Docker-Container 内的 dotnet restore 错误 - 权限被拒绝
- java - 如何根据 Java 中的给定深度深度选择节点?
- c# - 反序列化一个对象中的多个 XML 元素
- postgresql - 与其他 Postgres DB 共享表