Как посчитать уникальные записи и получить количество этих уникальных записей в таблице с помощью SQL?

StackOverflow https://stackoverflow.com/questions/237302

Вопрос

Представьте, что у меня есть такая таблица:

идентификатор: Товар: 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top