Устанавливаем уникальность значения

Задача
Вы хотите знать, уникальны ли значения таблицы.

Решение
Используйте инструкцию HAVING в сочетании с функцией COUNT().

Обсуждение
Вы можете использовать инструкцию HAVING для нахождения уникальных значений в тех случаях, где ключевое слово DISTINCT неприменимо. DISTINCT удаляет дубликаты, но не сообщает о том, какие значения повторялись в исходном множестве. HAVING же может указать, какие значения уникальны, а какие – нет.

Следующий запрос выводит дни, в которые работал только один водитель, и дни, в которые работало несколько водителей. HAVING и COUNT() используются для определения того, являются ли значения trav_date уникальными:

mysql> SELECT trav_date, COUNT(trav_date)
-> FROM driver_log
-> GROUP BY trav_date
-> HAVING COUNT(trav_date) = 1;


+--------------+-----------------------+
| trav_date | COUNT(trav_date) |
+--------------+-----------------------+
| 2001-11-26 | 1 |
| 2001-11-27 | 1 |
| 2001-12-01 | 1 |
+--------------+-----------------------+

mysql> SELECT trav_date, COUNT(trav_date)
-> FROM driver_log
-> GROUP BY trav_date
-> HAVING COUNT(trav_date) > 1;


+--------------+-----------------------+
| trav_date | COUNT(trav_date) |
+--------------+-----------------------+
| 2001-11-29 | 3 |
| 2001-11-30 | 2 |
| 2001-12-02 | 2 |
+--------------+-----------------------+

Такой прием можно применять и к комбинациям значений. Например, чтобы найти количество пар отправитель-получатель (srcuser-dstuser), которые обменялись всего одним письмом, будем искать комбинации, встречающиеся в таблице mail только один раз:

mysql> SELECT srcuser, dstuser
-> FROM mail
-> GROUP BY srcuser, dstuser
-> HAVING COUNT(*) = 1;


+---------+---------+
| srcuser | dstuser |
+---------+---------+
| barb | barb |
| gene | tricia |
| phil | barb |
| tricia | gene |
| tricia | phil |
+---------+---------+

Обратите внимание, что запрос не выводит счетчик, как это делали предыдущие запросы с целью показать правильность подсчета. Вы можете использовать счетчик в инструкции HAVING, не включая его в список столбцов вывода.
Теги:
HAVING, COUNT
Добавлено: 23 Июля 2018 06:34:55 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...