如何获取仅分配给一个值而没有其他值的唯一 ID 的计数?
Posted
技术标签:
【中文标题】如何获取仅分配给一个值而没有其他值的唯一 ID 的计数?【英文标题】:How to get count of unique ids which have been assigned to only one value and no other? 【发布时间】:2021-04-08 16:42:24 【问题描述】:如何为每个值获取仅分配给一个唯一值而没有其他值的 id 计数?
date | country | value | id | col5 |
---|---|---|---|---|
---- | ----- | --a-- | 1 | ----- |
----- | ----- | --a-- | 2 | ----- |
----- | ----- | --b-- | 2 | ----- |
----- | ----- | --c-- | 2 | ----- |
----- | ----- | --d-- | 3 | ----- |
----- | ----- | --e-- | 4 | ----- |
---- | ----- | --e-- | 1 | ----- |
----- | ----- | --f-- | 2 | ----- |
----- | ----- | --g-- | 2 | ----- |
----- | ----- | --h-- | 2 | ----- |
----- | ----- | --i-- | 3 | ----- |
----- | ----- | --e-- | 4 | ----- |
----- | ----- | --j-- | 5 | ----- |
---- | ----- | --j-- | 1 | ----- |
----- | ----- | --a-- | 2 | ----- |
----- | ----- | --c-- | 2 | ----- |
----- | ----- | --d-- | 6 | ----- |
----- | ----- | --d-- | 3 | ----- |
----- | ----- | --e-- | 7 | ----- |
---- | ----- | --e-- | 1 | ----- |
----- | ----- | --f-- | 6 | ----- |
----- | ----- | --g-- | 2 | ----- |
----- | ----- | --z-- | 2 | ----- |
----- | ----- | --i-- | 3 | ----- |
----- | ----- | --g-- | 9 | ----- |
----- | ----- | --g-- | 10 | ----- |
----- | ----- | --k-- | 10 | ----- |
-
下面的示例,对于值“e”,结果应为 2(4 和 7 仅分配给一个值,没有其他值,即“e”)。
或者对于值 'b',结果应该是 0(没有 id 只分配给 'b' 并且没有其他值..)
或者对于值 'c',结果应该是 0(没有 id 只分配给 'c' 并且没有其他值..)
或者对于值“j”,结果应该是 1(5 只分配给一个值,没有其他值,即“j”)
或者对于值 'd',结果应该是 1(6 只分配给一个值,没有其他值,即 'd')。
或者对于值“g”,结果应该是 1(9 只分配给一个值,没有其他值,即“g”)。
等等……
试过了,但没有返回正确的结果。
select
value
, COUNT (distinct id)
from table
WHERE
date >= DATE '20200101'
anD country IN (c1, c2, c3)
group by
value
having
max(value) LIKE 'a' AND min(value) LIKE 'a'
OR max(value) LIKE 'b' AND min(value) LIKE 'b'
OR max(value) LIKE 'c' AND min(value) LIKE 'c'
OR max(value) LIKE 'd' AND min(value) LIKE 'd'
OR max(value) LIKE 'e' AND min(value) LIKE 'e'
OR max(value) LIKE 'f' AND min(value) LIKE 'f'
OR max(value) LIKE 'g' AND min(value) LIKE 'g'
etc... (rest of values / letters)
【问题讨论】:
【参考方案1】:如何为每个值获取仅分配给一个唯一值而没有其他值的 id 计数?
您可以使用两个级别的聚合:
select count(*)
from (select id
from t
group by id
having min(value) = max(value)
) i;
【讨论】:
我需要为每个值分配仅分配给该值的 id 的计数。您的 SQL 仅返回一个数字。特定值的结果也可以为 0,这意味着对于该值,没有仅为其分配 id。 - 顺便说一句:哇!我是否从“数据挖掘技术:营销、销售和客户关系”的真正作者那里得到答案? 任何帮助将不胜感激!以上是关于如何获取仅分配给一个值而没有其他值的唯一 ID 的计数?的主要内容,如果未能解决你的问题,请参考以下文章