#sql #oracle #group-by #count
Вопрос:
При попытке создать запрос он продолжает подсчитывать общее количество клиентов премиум-членства во всех филиалах и показывает это как количество для каждого магазина/филиала.
Как показано ниже, во всех филиалах в Лос-Анджелесе, Сан-Франциско и Сан-Диего количество премиум-клиентов равно 9, что соответствует общему числу премиум-клиентов во всех филиалах. Правильное количество должно быть 5 для LA, 3 для SF и 1 для SD.
Я не уверен, что не так с моим кодом?
ВЫБЕРИТЕ КОЛИЧЕСТВО(x.Идентификатор клиента), y.Адрес магазина.Адрес улицы, y.Адрес магазина.город, y.Адрес магазина.почтовый индекс ИЗ воспоминаний О домашних животных x, из воспоминаний о домашних животных y ГДЕ x.членство = "Премиум" ГРУППА ПО адресу магазина.Адрес улицы, адрес магазина.город, адрес магазина.почтовый индекс ЗАКАЗ ПО КОЛИЧЕСТВУ(x.ИДЕНТИФИКАТОР клиента);
Ответ №1:
Во-первых, вы должны использовать правильный JOIN
синтаксис.
Во-вторых, вы должны использовать значимые псевдонимы таблиц.
В-третьих, вам JOIN
нужно исправить пункт для присоединения. Следующее-это предположение:
SELECT COUNT(*), b.storeAddress.streetAddress, b.storeAddress.city, b.storeAddress.postcode
FROM petStoreMemberships m JOIN
petStoreBranches b
ON m.branchId = b.branchId
WHERE m.membership = 'Premium'
GROUP BY b.storeAddress.streetAddress, b.storeAddress.city, b.storeAddress.postcode
ORDER BY COUNT(*);
Если вы используете правильный JOIN
синтаксис, вы получите ошибку из-за отсутствующего ON
предложения.