Как подсчитать уникальные записи и получить количество этих уникальных элементов в таблице с помощью SQL?
Представьте, что у меня есть таблица вроде этого:
ID: Продукт: shop_id
1: Баскетбол: 41
2: Футбол: 41
3: Ракетный: 45
4: Автомобиль: 86
5: Plane: 86
Теперь это пример большого интернет-центра, где есть магазины, которые продаются одному клиенту, поэтому клиент может выбрать больше продуктов из каждого магазина и купить его в одной корзине.
Однако я не уверен, есть ли какой-либо синтаксис SQL, который позволяет мне просто получить уникальные shop_ids и общее количество продуктов этих магазинов в корзине клиентов. Поэтому я бы получил что-то вроде:
Магазин 41 имеет 2 продукта
Магазин 45 один продукт
Магазин 86 двух продуктов
Я могу заставить SQL-запросы зачерпнуть через таблицу, чтобы сделать какую-то переменную массива ['shop_id'] ['number_of_products'], которая будет хранить все продукты shop_ids, а затем "уникальные" - вверх и подсчитать, сколько раз я пришлось вырезать еще один shop_id, чтобы иметь некоторые оставшиеся, но это кажется просто бесполезным сценарием.
Если у вас есть хорошая и аккуратная идея, пожалуйста, дайте мне знать.
Ответы
Ответ 1
Это именно то, для чего предназначены агрегатные функции. Вы делаете одну строку вывода для каждой группы строк в таблице. Группируйте их по shop_id и подсчитайте количество строк в каждой группе.
select shop_id, count(1) from TABLE_NAME
group by shop_id