Есть таблица org (name, emp_id). Для каждого возможного значения name, необходимо вывести количество уникальных emp_id. Можно ли это сделать с помощью count() или как ещё? UPD: Немного расшифрую. Допустим (name) (emp_id) apple 85962 apple 14654 intel 14654 intel 14654 В результате необходимо получить что-то вроде (name) count(emp_id) apple 2 intel 1 т.е. если emp_id повторяется в разных name, то их необходимо подсчитывать
Ответ
Первая интерпретация вашего вопроса Для каждого name подсчитать уникальное количество emp_id SELECT name, COUNT(DISTINCT emp_id) AS qty FROM org GROUP BY name Вторая интерпретация, подсчитать так, что бы исключить emp_id встречающиеся у разных name Для этого пойдем от обратного подсчитаем количество name у emp_id, то есть нам необходимо исключить из выборки emp_id встречающиеся у нескольких name SELECT name, COUNT(DISTINCT emp_id) AS qty FROM org WHERE NOT emp_id IN ( SELECT emp_id FROM org GROUP BY emp_id HAVING COUNT(DISTINCT name) > 1 ) GROUP BY name Унифицировать или нет дело ваше, смотря что там лежит и как
Комментариев нет:
Отправить комментарий