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 

그래서 각 ID에 대해 그들이 여러 범주를 가질 수와 관련성이 어떤 범주 번호 (1 첫 번째 범주, 이초, 34 해당 ID에 대한 서른네번째 카테고리입니다) 무엇처럼 보이는 테이블이 .

카테고리의 수를 검색 할 수있는 위치를 쿼리하고 싶지만 해당 ID가 이미 카테고리로 계산 된 경우 계산되지 않습니다.

그래서 이것에 대한 대답은 같을 것이다 : 도움을

 
Category   Count 
273003000   6 
273003002   2 

감사합니다!

+0

'당신이 원하는 것일 지 모르겠다.'category를 선택하고, sum (relevancy)을 sum_rev, count (*)를 tablename group by category '로 계산한다. 이것이 의미하는 바를 모르겠다. "카테고리 수를 검색 할 수있는 위치를 쿼리하고 싶지만, ID가 이미 카테고리로 계산 된 경우에는 계산되지 않습니다." –

+0

@peter, 나는 나 자신을 설명하는 나쁜 일을 정말로했다. 따라서 카테고리 목록을 가지고 있으며 각 카테고리 내에서 ID의 개수를 가져 오려고하지만 일부 ID에는 두 개 이상의 카테고리가 있으므로이 ID를 두 번 계산하지 않으려 고합니다. 그래서 기본적으로 내 질의는 다음과 같이 보입니다 .... 카테고리를 선택하고, TABLE에서 count (distinct pid)를 카테고리별로 (.......) 그룹으로 분류하십시오. 이것으로 계산됩니다 (원래 예제에서) 27300300 = 6 and 273003002 = 4 – user2755209

답변

3

ID에 대해 최소 Relevancy의 레코드 만 계산하려는 것 같습니다. 따라서 (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

관련 문제