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 - 计算一个列值在另一列中的出现的主要内容,如果未能解决你的问题,请参考以下文章