如何获取仅分配给一个值而没有其他值的唯一 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 的计数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从结果集中打印值而没有列中的任何重复记录

如何根据非常大的df中的名称有效地将唯一ID分配给具有多个条目的个人

如何仅显示具有值的文本视图?

统一的 Firebase 远程配置仅获取默认值而不是真实值

如何从另一个表中获取每个值的计数?

SQL Join 2个表,返回只存在1个值而没有其他值的记录