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