sql - SQL 查询:构造控制组
问题描述
我有两个数据集。第一个数据集包含两个(唯一的)识别特征 - 这里是ZIP和种族- 以及一个名为count的变量。第二个数据集包含有关个人的信息 - ZIP、种族和一些结果变量。我的目标是构建第二个数据集的子集,其中某个 ZIP/种族组合的观察次数是第一个数据集的计数。说清楚:
数据集#1:
ZIP | race | count |
--------------------
30218 | White | 59
30218 | Black | 23
30219 | White | 78
30219 | Black | 14
...
数据集#2:
id | ZIP | race | outcome
-------------------
001 | 30218 | White | 23.3
002 | 30219 | Black | 46.1
...
目标是有一个输出返回数据集 #2 的子集,其中包含来自 ZIP 30218 的 59 个白人个体、来自 ZIP 30218 的 23 个黑人个体等。
要使用的示例 SQL 代码或一般策略都会有所帮助。谢谢
解决方案
您可以使用 row_number 窗口函数按某些条件对行进行编号,然后将其连接到数据集 1。请注意,我在此处将 count 重命名为 n 以避免使用关键字:
SELECT id,
sub.zip,
sub.race,
sub.outcome
FROM
(
SELECT id,
zip,
race,
outcome,
row_number() OVER (partition by zip, race ORDER BY id) -- You can order by whatever you want
FROM data_set_2
) sub
JOIN data_set_1 ON data_set_1.zip = sub.zip
AND data_set_1.race = sub.race
AND data_set_1.n >= row_number -- this will limit the results
;
推荐阅读
- flutter - Flutter : 我想在你点击图片的时候换一张图片,其他的不受点击的影响
- java - 如何优化java中的计数排序?
- css - Reactjs / Material-UI:className 在 ToggleButton 组件上不起作用
- webpack - 由于异步 Object.build 中的 webpack 错误,构建失败
- visual-studio - 使用版本号重命名设置输出
- pyspark - 如何过滤 Databricks Autoloader 流中的文件
- angular - 如何使用 Angular RouterLink 导航到路由器插座?
- python - Pandas DataFrame 和 SQL 未提交
- npm - 如何获取节点模块的深度?
- java - 如何在 Project Reactor 中将 Mono 多播给多个订阅者?