я в настоящее время есть запрос, аналогичный:MySQL использовать DISTINCT с GROUP BY на той же колонке
select customers.customerId, items.itemName, sum(orders.quantity) as boughtTotal
from customers join orders on customers.customerId = orders.customerId
join items on items.itemId = orders.itemId
group by customers.customerId, items.itemName
order by boughtTotal desc;
Цель запроса связать клиентам предметов, которые они купили, которые могут охватывать более много заказов, и общая количество каждого уникального предмета, купленного. Это достигается тем, что у меня есть. Я хочу сделать этот шаг дальше и выбрать наиболее популярный элемент для каждого клиента. Поскольку это упорядочено с большинством купленных предметов наверху, я решил, что просто должен добавить distinct
рядом с customers.customerId
в операторе select
, чтобы удалить дубликаты. Однако, добавление distinct
, кажется, ничего не делает. Я был бы признателен за помощь в понимании того, почему distinct
, похоже, ничего не делает здесь, но также и как добиться того, что я пытаюсь сделать - удалить дубликаты, кроме самого популярного элемента клиента.
Таблицы:
customers
customerId | name
1 | John
2 | Jane
orders
orderId | customerId | quantity | itemId
1 | 1 | 11 | 1
2 | 2 | 13 | 2
3 | 1 | 4 | 2
4 | 2 | 14 | 1
5 | 1 | 1 | 1
items
itemId | itemName
1 | dog
2 | cat
Так из этих данных, текущий запрос будет возвращать следующие:
customerId | itemName | boughtTotal
2 | dog | 14
2 | cat | 13
1 | dog | 12
1 | cat | 4
И что я хотел бы иметь следующий:
customerId | itemName | boughtTotal
2 | dog | 14
1 | dog | 12
добавить еще одно условие ON в РЕГИСТРИРУЙТЕСЬ – Sinto
В результирующий набор, две линии для клиента 2 различны, и поэтому «отчетливый» ничего не делает. Запрос, который вы написали, не даст вам желаемого результата, как вы обнаружили. –
Используйте предложение 'having' вместе с подзапросом, который выбирает запись максимального количества. – CuriousMind