2013-09-06 3 views
2

Я искал и не могу найти ответ на этот вопрос о поиске отличного соответствия. У меня есть таблица, которая выглядит какОтличное количество с несколькими столбцами

 
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 

Таким образом, для каждого идентификатора они могут иметь несколько категорий и уместность это то, что то, что номер категории (1 является первой категорией, 2 секунды, 34 тридцать четвертой категории для этого идентификатора) ,

Я хочу запросить, где я могу найти счетчик категории, но если идентификатор уже подсчитан для категории, он не будет считаться.

Так что для этого ответа будет выглядеть так:

 
Category   Count 
273003000   6 
273003002   2 

Спасибо за помощь !!

+0

Я m не уверен, что это то, что вы хотите: 'select category, sum (Relevancy) как sum_rev, count (*) как ct из группы tablename по категориям'. Я не знаю, что это значит: «Я хочу запросить, где я могу найти счет категории, но если идентификатор уже подсчитан для категории, он не будет считаться». –

+0

@peter, я действительно плохо описал себя. Таким образом, у меня есть список категорий и вы хотите получить количество идентификаторов в каждой категории, но некоторые из них имеют более одной категории, которую я ищу, поэтому я не хочу, чтобы этот идентификатор был засчитан дважды. Таким образом, в основном мой запрос сейчас выглядит как ... Выберите категорию, счетчик (отличный pid) из таблицы, где категория (.......) по категориям. При этом он подсчитывает (в исходном примере) 27300300 = 6 и 273003002 = 4 – user2755209

ответ

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 
0

Это должно сделать трюк, так как вы не заботитесь о самом значении уместность, но только граф:

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

SQLFiddle

Смежные вопросы