sql - 加入两个数据集以获得最佳结果
问题描述
提前致谢!这是一个有点长的问题,但希望它清晰简洁。
我有两个不同的查询带来两个数据集。
两个数据集都为相似区域带来相同粒度的数据。
第一个数据集在一个季节的每个月有多个快照,因此对于一个季节的相同谷物,每个季节它具有三个不同的指标值。
数据集 1 ( country , season , month , metric 是列名) (1. A , fall, 9/1, 1 是列的记录)
国家 季节 月度 指标
- A、秋季、9/1、1
- A、秋季、10/1、2
- A、秋季、11/1、3
其中,由于第二个数据集有一个季节的快照(仅淡季一个月),因此每个季节只有一个快照。
数据集 2
国家 季节 月度 指标
- A , 秋天 , 9/1 , 4
我目前的完全外连接方法给了我以下输出
国家 季节 月份 metric1 metric2
A、秋季、9/1、1、4
A、秋季、10/1、2、
A、秋季、11/1、3、
**请注意,如果使用 nvl,10/1 和 11/1 的 metric2 为空白或零,但我们需要在这两个月内填充相同的值 4,以及 如何实现这一点
或最终输出应该看起来像这样
国家 季节 月份 metric1 metric2
A、秋季、9/1、1、4
A、秋季、10/1、2、4
A、秋季、11/1、3、4
解决方案
我根本不熟悉 Snowflake,但假设它使用相当标准的 SQL,这应该很简单:
SELECT a.country, a.season, a.month, a.metric AS metric1, b.metric AS metric2
FROM dataset1 a
INNER JOIN dataset2 b
ON a.country = b.country AND a.season = b.season
即它不应该需要一个完整的外部连接,并且应该只需要匹配国家和季节。PS 如果您在问题中展示了您尝试过的 SQL,这将有所帮助。
推荐阅读
- python - 如何设置目标文件由文件内容确定的snakemake规则?
- python - QSortFilterProxyModel 创建空白项
- mysql - 在字段类型时间戳中按一天获取 SELECT MySQL 中的数据
- react-native - 在 react native 的原生基础库中更改 fontFamily 不起作用
- java - 从“JavaFx”独立应用程序更改应用程序“图像名称”和“描述”
- javascript - select2 multipe get error 超出最大调用堆栈大小
- php - 带条件的 PHP 重定向
- c# - 系统响应后如何关闭进度对话框
- hyperledger-fabric - 在超级账本结构中,如何在对等通道创建中传递两个订购者?
- flutter - 用 Flutter Gallery 中的 Pages 替换 body 中的图标 BottomNavigationBar 示例