2015-10-20 2 views
3

У меня возникает эта проблема, когда я пытаюсь подсчитать количество записей по уникальному значению.Подсчет уникальных строк

SELECT table1.PID, table2.CID 

FROM table1 

INNER JOIN table2 using (OID) 

WHERE table1.PID IN (
    SELECT table1.PID 
    FROM table1 
    JOIN table2 using (OID) 
    WHERE table2.CID = 'A' 
) AND table2.CID != 'A' 

, что я хотел бы сделать, это подсчитать количество уникальных table2.CID записей.

ПРИМЕЧАНИЕ: Мне нужно сгруппировать причину повторяющихся значений.

Просто, чтобы помочь, вот изображение таблицы, которую я получаю как выход. То, что я хотел бы иметь, - это подсчет каждого имени по уникальным значениям идентификатора. Так ERNSH должен вернуться 7, а не 15.

enter image description here

+0

Вы хотите подсчет уникальных строк или список уникальных строк? – CFreitas

+0

MySQL или SQLite? Удалите неправильный тег. –

ответ

2

Вы хотите одну запись на УУР, поэтому группе МУРа. Затем используйте COUNT. И поскольку вы хотите считать разные значения, используйте COUNT (DISTINCT):

SELECT COUNT(DISTINCT table1.PID), table2.CID 
FROM table1 
INNER JOIN table2 using (OID) 
WHERE table1.PID IN (
    SELECT table1.PID 
    FROM table1 
    JOIN table2 using (OID) 
    WHERE table2.CID = 'A' 
) AND table2.CID != 'A' 
GROUP BY table2.CID; 
+0

удивительный .. Я потратил 1 час, пытаясь сделать то же самое. Большое спасибо! – Anonymous

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