2008-10-26 8 views
15

Представьте меня таблицу, как это:Как подсчитать уникальные записи и получить количество этих уникальных элементов в таблице с использованием SQL?

ID: Продукт: shop_id

1: Баскетбол: 41

2: Футбол: 41

3: Rocket: 45

4: Автомобиль: 86

5: Самолет: 86

Теперь это пример большого интернет-центра, где есть магазины, которые продаются одному клиенту, поэтому клиент может выбрать больше продуктов из каждого магазина и купить его в одной корзине.

Однако я не уверен, есть ли какой-либо синтаксис SQL, который позволяет мне просто получить уникальные shop_ids и общее количество продуктов этих магазинов в корзине клиентов. Так что я хотел бы получить что-то вроде:

Магазин 41 имеет 2 продукта

магазин 45 один продукт

Магазин 86 два продукта

Я могу делать запросы SQL, чтобы выкопать через стол, чтобы сделать какой-то из переменной ['shop_id'] ['number_of_products'], которая хранит все файлы shop_ids, а затем «уникальные» - подсчитывает, сколько раз мне приходилось вырезать еще один shop_id, чтобы иметь некоторые оставшиеся, но это просто кажется много бесполезных скриптов.

Если у вас есть хорошая и аккуратная идея, пожалуйста, дайте мне знать.

ответ

31

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

select shop_id, count(1) from TABLE_NAME 
    group by shop_id 
+0

(1) после того, как Count означает, какой параметр после SELECT должен быть подсчитан? – Skuta 2008-10-26 01:13:45