Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с SQL

Андрей Ученик (244), на голосовании 1 год назад
Какую часть кода добавить чтобы на экран вывести только cnt > 5


SELECT
Customers.CustomerName,
Customers.CustomerID,
COUNT(Orders.OrderID) as cnt
FROM
Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
GROUP BY
Customers.CustomerName,
Customers.CustomerID
Голосование за лучший ответ
Фёдор Зайвин Гуру (2534) 1 год назад
Ответ ниже написан полностью чат-ботом, поэтому прошу критично воспринимать его ответ (не принимать на веру). Если что-то непонятно или неправильно, можете задать уточняющие вопросы.

Вы можете использовать предложение HAVING для фильтрации по агрегированным данным:
 SELECT   
Customers.CustomerName,
Customers.CustomerID,
COUNT(Orders.OrderID) as cnt
FROM
Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
GROUP BY
Customers.CustomerName,
Customers.CustomerID
HAVING
COUNT(Orders.OrderID) > 5;
Это вернет только те строки, у которых количество заказов больше 5.
АндрейУченик (244) 1 год назад
)))) СТранно, мне казалось что я эту конструкцию использовал уже и она не работала - теперь после вашего ответа все работает(магия) Спасибо!
АндрейУченик (244) 1 год назад
а чтобы список шел по убыванию в конце просто DESC добавить??
Фёдор Зайвин Гуру (2534) Да, вы можете добавить DESC в конец запроса, чтобы отсортировать результаты в порядке убывания. Например:
 SELECT   
  Customers.CustomerName,  
  Customers.CustomerID,  
  COUNT(Orders.OrderID) as cnt  
FROM   
  Customers  
  INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID  
GROUP BY  
  Customers.CustomerName,  
  Customers.CustomerID  
HAVING  
  COUNT(Orders.OrderID) > 5 
ORDER BY  
  cnt DESC;  
Этот запрос выведет список клиентов, у которых количество заказов больше 5, отсортированных по убыванию количества заказов (т.е. начиная с клиента с наибольшим количеством заказов). © ChatGPT
Константин Карначук Гуру (4608) 1 год назад
в завершении добавить
WHERE cnt>5
АндрейВысший разум (461042) 1 год назад
Глупость.
Виктор Корнеплод Профи (550) 1 год назад
Вы можете добавить условие HAVING после группировки, чтобы отфильтровать только те строки, в которых cnt > 5:
 SELECT 
Customers.CustomerName,
Customers.CustomerID,
COUNT(Orders.OrderID) as cnt
FROM
Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
GROUP BY
Customers.CustomerName,
Customers.CustomerID
HAVING
cnt > 5;
Похожие вопросы