Представьте, что у меня есть такая таблица:
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, чтобы немного осталось, но это выглядит как много бесполезных сценариев.
Если у вас возникла хорошая и интересная идея, пожалуйста, дайте мне знать.


Это как раз то, для чего нужны агрегатные функции. Вы делаете одну строку вывода для каждой группы строк в таблице. Сгруппируйте их по shop_id и посчитайте, сколько строк в каждой группе.
select shop_id, count(1) from TABLE_NAME
group by shop_id
Нет, (1) не является ссылкой на какой-либо столбец, это просто целочисленное значение 1. Более типично использовать COUNT (*) или COUNT (имя столбца). Glomek использует COUNT (1) как постоянное целочисленное значение, потому что некоторые люди считают, что это быстрее, чем ссылка на столбец.
Оптимизатор должен позаботится о том, чтобы count (*) занимал столько же времени, сколько count (1). Думаю, некоторые оптимизаторы этого не делают.
Спасибо, ребята, очень помогли! Да благословит Бог всех вас, кто помогает
... и вы можете добавить `order by count (1); ' to .. err .. упорядочить по количеству: P
(1) after Count означает, какой параметр после SELECT следует считать?