2

我一直在环顾四周,找不到关于找到一个独特匹配的问题的答案。我有一张看起来像的桌子

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

谢谢您的帮助!!

4

2 回答 2

1

假设如果某个 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 小提琴

于 2013-09-06T18:15:41.383 回答
0

你需要GROUP BY这样的: -

select Category, COUNT(*) as Count
from YourTable
GROUP BY Category;

SQLFIDDLE

于 2013-09-06T18:03:03.907 回答