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

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

id: Товар: shop_id

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

2: Футбол: 41

3: Ракета: 45

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

5: Самолет: 86

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

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

Магазин 41 имеет 2 товаров

Купить 45 один товар

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

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

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

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
15
0
35 991
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

(1) after Count означает, какой параметр после SELECT следует считать?

Skuta 26.10.2008 04:13

Нет, (1) не является ссылкой на какой-либо столбец, это просто целочисленное значение 1. Более типично использовать COUNT (*) или COUNT (имя столбца). Glomek использует COUNT (1) как постоянное целочисленное значение, потому что некоторые люди считают, что это быстрее, чем ссылка на столбец.

Bill Karwin 26.10.2008 04:26

Оптимизатор должен позаботится о том, чтобы count (*) занимал столько же времени, сколько count (1). Думаю, некоторые оптимизаторы этого не делают.

yfeldblum 26.10.2008 04:51

Спасибо, ребята, очень помогли! Да благословит Бог всех вас, кто помогает

Skuta 26.10.2008 13:20

... и вы можете добавить `order by count (1); ' to .. err .. упорядочить по количеству: P

Cyrus 13.07.2012 05:44

Другие вопросы по теме