sql - SQL - 当产品存在时,将其对应的值填充到分区内的所有行
问题描述
我有类似以下每月数据集的内容。
我有一个产品、公司 ID、日期和数量。一家公司(用公司 ID 表示)可以购买多种产品。我想创建一个新列,如果公司在当月购买每个行项目,则该列将包含产品“C”的数量。如果没有购买产品“C”,则返回 0。
Product Company_ID Date Quantity Desired_Calculated_Column
A 1 5/1/2019 100 300
B 1 5/1/2019 200 300
C 1 5/1/2019 300 300
A 2 6/1/2019 150 125
B 2 6/1/2019 250 125
C 2 6/1/2019 125 125
A 3 7/1/2019 175 0
B 3 7/1/2019 275 0
我一直在尝试根据产品和公司 ID 对数据进行分区。我一直在尝试利用 LAST_VALUE 但没有成功。
LAST_VALUE(quantity) OVER (PARTITION BY Date, Company_ID
ORDER BY product_group
) AS Desired_Calculated_Column
解决方案
你不想last_value()
。您可以使用条件聚合,假设'C'
每组发生一次:
MAX(CASE WHEN product_group = 'C' THEN quantity ELSE 0 END) OVER
(PARTITION BY Date, Company_ID) AS C_quantity
推荐阅读
- angular - 异步管道和订阅同一个 Observable
- node.js - NodeJs/Express/MongoDb - ERR_HTTP_HEADERS_SENT
- python - 在 pandas 中获取给定日期和今天之间的所有 YEAR 和 WEEK 组合
- python - 有没有办法在 Jupyter Notebook 中推理后将图像导出到硬盘驱动器?
- java - 使用 Java 从 RabbitMQ 获取 Base64 编码的 GZipped 字符串
- xml - 将 Muenchian 分组应用于 XSLT
- linux - 在带有 docker swarm 的 unfs3 中使用 mount 命令时出现问题
- c# - OpenCvSharp 内存泄漏
- react-native - 如何使用 xcode 模拟器缩小 react-native-maps?
- ios - Swift - 将 UIImage 转换为 jpegData - [Metal] 9072 x 12198 iosurface 对于 GPU 来说太大了