如何使用解析窗口SQL函数在同一数据集的行组中查找id值

用户名
--Dataset Name: Jobs
week   date    job_id
----------------------
wk1    01/15   300
wk1    01/15   301
wk1    01/15   302
wk2    01/22   300 
wk2    01/22   302
wk2    01/22   303
wk2    01/22   304
wk3    01/29   302
wk3    01/29   304
wk3    01/29   305

我有一个像上面的数据集。我想创建3个其他列:

is_job_id_present_in_wk1

is_job_id_present_in_wk2

is_job_id_present_in_wk3

我想编写一个SQL查询,将三个新列的每一行标记为1或0。我不想使用自我加入。我想利用一些分析窗口函数。

例如,对于给定数据集中的第一行,is_job_id_present_in_wk1,is_job_id_present_in_wk2和is_job_id_present_in_wk3的值将为1(因为在所有三个星期中都存在job_id 300)。

对于给定数据集中的第二行,is_job_id_present_in_wk1的值为1,is_job_id_present_in_wk2的值为0,is_job_id_present_in_wk3的值为0(因为job_id 301仅在整个第1周都存在)。

尝试到现在为止:

SELECT week, date, job_id
       , CASE WHEN job_id = 
                            FIRST_VALUE(CASE WHEN week='wk1' THEN job_id ELSE NULL END) OVER(ORDER BY job_id rows between current row and current row) 
 THEN 1 ELSE 0 END as is_job_id_present_in_wk1
 FROM jobs;
鳄鱼

尝试:

SELECT week, date, job_id,
        max( case when week = 'wk1' then 1 else 0 end )
            over (partition by  job_id) as is_job_id_present_in_wk1,
        max( case when week = 'wk2' then 1 else 0 end )
            over (partition by job_id) as is_job_id_present_in_wk2,
        max( case when week = 'wk3' then 1 else 0 end )
            over (partition by  job_id) as is_job_id_present_in_wk2
FROM jobs;

也尝试以下版本:

SELECT week, date, job_id
       , CASE WHEN EXISTS( SELECT 1 FROM jobs job1 
                           WHERE job1.job_id = jobs.job_id AND job1.week = 'wk1' )
              THEN 1 ELSE 0 END  as is_job_id_present_in_wk1
       , CASE WHEN EXISTS( SELECT 1 FROM jobs job1 
                           WHERE job1.job_id = jobs.job_id AND job1.week = 'wk2' )
              THEN 1 ELSE 0 END  as is_job_id_present_in_wk2
       , CASE WHEN EXISTS( SELECT 1 FROM jobs job1 
                           WHERE job1.job_id = jobs.job_id AND job1.week = 'wk3' )
              THEN 1 ELSE 0 END  as is_job_id_present_in_wk3
 FROM jobs;

因为它可能比带有分析功能的版本更快,尤其是在job_id + week列上创建复合索引时。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用解析窗口SQL函数在同一数据集的行组中查找id值

来自分类Dev

SQL - 将来自同一数据集的数据与特定列中的匹配值分开

来自分类Dev

根据条件从同一数据框中查找行

来自分类Dev

如何从同一数据框中查找另一列中包含唯一值的列值?

来自分类Dev

跨同一数据集的行的SSRS操作-子集-查找

来自分类Dev

如何更改特定列的特定行的值,以及在同一数据框中以熊猫为单位的特定行的值

来自分类Dev

如何使用同一数据表的第一行更改数据表的列名值

来自分类Dev

Python Pandas 根据同一数据框中的多个列值查找列值

来自分类Dev

如何将一个数据帧中某些列的值与另一数据帧中同一列集的值进行比较?

来自分类Dev

在一个查询中显示来自同一数据集的不同值

来自分类Dev

R-在同一数据集上使用函数n次

来自分类Dev

如果值在同一列和同一数据框中的窗口范围内,则创建新列

来自分类Dev

在多个组中查找唯一数量的ID

来自分类Dev

Caffe 如何在原型中为同一数据集缩放和设置均值

来自分类Dev

如何使用Apache Flink在同一数据集上计算两个和

来自分类Dev

如何使用同一数据库在不同应用程序之间执行Django查找?

来自分类Dev

将sql列值附加到从同一数据集获得的另一列内容写入的文件的文件名中

来自分类Dev

查找一列的最大值(按组),然后将值插入R中的另一数据帧

来自分类Dev

根据通用值合并同一数据框中的行

来自分类Dev

根据通用值合并同一数据框中的行

来自分类Dev

是否有任何函数可以将所有特征(行)减去同一数据文件中的特定值(行)?

来自分类Dev

同一数据集的日期范围

来自分类Dev

同一数据集的日期范围

来自分类Dev

如何在同一数据框内匹配值?

来自分类Dev

合并熊猫中同一数据框内的列值

来自分类Dev

迭代比较同一数据框中的列值

来自分类Dev

比较同一数据框列中的值

来自分类Dev

如何重新计算列并将新值存储在同一数据框中?

来自分类Dev

如何根据同一数据框中另一列的值替换数据框中的值?

Related 相关文章

  1. 1

    如何使用解析窗口SQL函数在同一数据集的行组中查找id值

  2. 2

    SQL - 将来自同一数据集的数据与特定列中的匹配值分开

  3. 3

    根据条件从同一数据框中查找行

  4. 4

    如何从同一数据框中查找另一列中包含唯一值的列值?

  5. 5

    跨同一数据集的行的SSRS操作-子集-查找

  6. 6

    如何更改特定列的特定行的值,以及在同一数据框中以熊猫为单位的特定行的值

  7. 7

    如何使用同一数据表的第一行更改数据表的列名值

  8. 8

    Python Pandas 根据同一数据框中的多个列值查找列值

  9. 9

    如何将一个数据帧中某些列的值与另一数据帧中同一列集的值进行比较?

  10. 10

    在一个查询中显示来自同一数据集的不同值

  11. 11

    R-在同一数据集上使用函数n次

  12. 12

    如果值在同一列和同一数据框中的窗口范围内,则创建新列

  13. 13

    在多个组中查找唯一数量的ID

  14. 14

    Caffe 如何在原型中为同一数据集缩放和设置均值

  15. 15

    如何使用Apache Flink在同一数据集上计算两个和

  16. 16

    如何使用同一数据库在不同应用程序之间执行Django查找?

  17. 17

    将sql列值附加到从同一数据集获得的另一列内容写入的文件的文件名中

  18. 18

    查找一列的最大值(按组),然后将值插入R中的另一数据帧

  19. 19

    根据通用值合并同一数据框中的行

  20. 20

    根据通用值合并同一数据框中的行

  21. 21

    是否有任何函数可以将所有特征(行)减去同一数据文件中的特定值(行)?

  22. 22

    同一数据集的日期范围

  23. 23

    同一数据集的日期范围

  24. 24

    如何在同一数据框内匹配值?

  25. 25

    合并熊猫中同一数据框内的列值

  26. 26

    迭代比较同一数据框中的列值

  27. 27

    比较同一数据框列中的值

  28. 28

    如何重新计算列并将新值存储在同一数据框中?

  29. 29

    如何根据同一数据框中另一列的值替换数据框中的值?

热门标签

归档