Как посчитать уникальные записи и получить количество этих уникальных записей в таблице с помощью SQL? - PullRequest
15 голосов
/ 26 октября 2008

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

Идентификатор: Продукт: 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 Ответ

31 голосов
/ 26 октября 2008

Это как раз то, для чего предназначены агрегатные функции. Вы делаете одну строку вывода для каждой группы строк в таблице. Сгруппируйте их по shop_id и посчитайте, сколько строк в каждой группе.

select shop_id, count(1) from TABLE_NAME
  group by shop_id
...