SQL - 计算一个列值在另一列中的出现

Posted

技术标签:

【中文标题】SQL - 计算一个列值在另一列中的出现【英文标题】:SQL - Count the occurence of one column value in another 【发布时间】:2020-07-08 02:59:21 【问题描述】:

我有一张如下图所示的表格。每行记录键是唯一的

ID    RECORD_KEY CONCAT_REJECT    CONCAT_SUB
1     A34785      A123             23
1     B23845      R384             A123
1     H38959      Y345             A123

预期结果

ID    CONCAT_REJECT    COUNT_REJECT_IN_SUB
1     A123             2
1     R384             0
1     Y345             0

如何执行此计数?我尝试使用COUNT(CONCAT_REJECT) over (PARTITION BY CONCAT_SUB)。但它没有给出预期的结果

【问题讨论】:

【参考方案1】:

在内部查询中计数concat_sub,然后与concat_reject 进行左连接以获得最终结果。这是demo。

select
    id,
    concat_reject,
    coalesce(total, 0) as count_reject_in_sub
from myTable m
left join(
  select
      concat_sub,
      count(*) as total
  from myTable
  group by
      concat_sub
) m1
on m.concat_reject = m1.concat_sub

输出:

| id  | concat_reject | count_reject_in_sub |
| --- | ------------- | ------------------- |
| 1   | A123          | 2                   |
| 1   | R384          | 0                   |
| 1   | Y345          | 0                   |

【讨论】:

以上是关于SQL - 计算一个列值在另一列中的出现的主要内容,如果未能解决你的问题,请参考以下文章

如果第二列值在SQL中不相同,则计算一列中的不同值

计算由另一列值分组的列值在 pandas 数据框中的共现

SQL 计算一列中的出现次数并计算另一列的总数

用于计算同一列的值百分比的 SQL [关闭]

在另一列满足条件后计算一列中的值

SQL如何查询出某一列中不同值出现的次数?