具有多列的不同计数

时间:2013-09-06 17:35:35

标签: mysql sql count distinct

我一直在环顾四周,无法找到这个问题的答案,找到一个独特的匹配。我有一张看起来像

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

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

我想查询我可以搜索类别计数的位置,但如果已经计算了某个类别的ID,则不会对其进行计数。

因此,答案如下:

Category         Count  
273003000         6
273003002         2

感谢您的帮助!!

2 个答案:

答案 0 :(得分:3)

听起来您只想计算每个Relevancy最少ID的记录。因此,您可以执行(SQL Fiddle example):

SELECT Category, COUNT(1)
FROM Table1 t1
WHERE NOT EXISTS
(
    SELECT 1
    FROM Table1 t2
    WHERE t2.ID = t1.ID
    AND t2.Relevancy < t1.Relevancy
)
GROUP BY Category

答案 1 :(得分:0)

这应该可以解决问题,因为您不关心相关性值本身,而只关心计数:

select a.category, count(a.relevancy) as count
from (select *
      from test
      group by id) as a
group by a.category;

SQLFiddle