mysql - 两列的不同计数

标签 mysql sql count distinct

我一直在四处寻找,但找不到关于寻找不同匹配项的问题的答案。我有一张看起来像

ID       Category      Relevancy
192820   273003000  2
242567   273003000  2
510711   273003000  2
510711   273003002  34
542178   273003000  1
551356   273003002  1
688833   273003000  3
734917   273003002  2
888879   273003000  1
891624   273003002  3

因此对于每个 id,它们可以有多个类别,相关性是什么类别编号(1 是第一个类别,2 第二个,34 是该 id 的第三十四个类别)。

我想查询在哪里可以搜索类别的计数,但如果该 id 已经被计入类别,则不会被计入。

所以对于这个答案看起来像:

Category         Count  
273003000         6
273003002         2

感谢您的帮助!

最佳答案

假设您从类别中排除一个 ID,如果该 ID 与具有较早 ID 的类别相关,则以下将起作用。从您的问题中不能完全清楚排除是如何工作的。如果您能澄清这一点,则可以调整查询

SELECT  t1.category
        ,count(distinct t1.ID)
FROM    table1 t1
WHERE NOT EXISTS 
        (SELECT 1
        FROM    table1 t2 
        WHERE   t2.id = t1.id 
        AND t2.category < t1.category
        )
GROUP BY
        t1.category

这是 SQL Fiddle

关于mysql - 两列的不同计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18663808/

相关文章:

sql - Bigquery 上的长 ID 正在使用科学计数法导入 excel,不要导入正确的数字

sql - 计算一个日历周期内多个起止记录之间的天数

sql - SQL中一个字段的多个条件计数

mysql - 将 MSSQL 函数转换为 MySQL

sql - 引用复合主键

java - 当 ID 为数组形式时,如何从 SQL 中检索值

c# - 快速linq计数问题

python - 我如何计算而不是在 python 中重复相同的字母

mysql - mysql 是否可以动态翻译存储在字符串中的 ID?

mysql - 如果子查询有超过 1 个结果,如何从 select 语句中的子查询返回 1 行?