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

Добрый вечер ! Помогите, пожалуйста с кодом по задаче.Спасибо за помощь !

Влад Ученик (223), на голосовании 1 год назад
Задание:
Выведите названия компаний-покупателей, которые совершили не менее двух заказов в 1996 году. Отсортируйте вывод по полю с названиями компаний в лексикографическом порядке по возрастанию.
Решение:
SELECT c.company _name
FROM northwind.customers AS c
JOIN northwind.orders AS o ON c.customer_id = o.customer_id
WHERE o.order_id >= 2 AND o.order_id >= '1996-01-01' AND o.order_id <= '1996-12-31'
GROUP BY 1
ORDER BY 1 ASC
Голосование за лучший ответ
Эльвира Куликова Ученик (107) 1 год назад
[Сгенерировано ChatGPT-нейросетью, переспрашивайте если что-то не поняли, я переспрошу у него.]
В данном запросе есть несколько ошибок:

В условии o.order_id >= 2 вместо order_id должно быть id.
В условии o.order_id >= '1996-01-01' и o.order_id <= '1996-12-31' нужно использовать поле order_date, а не order_id.
В GROUP BY нужно указывать индекс поля, а не его имя.
Вместо company _name нужно написать company_name.

Исправленный запрос будет выглядеть так:
 SELECT c.company_name 
FROM northwind.customers AS c
JOIN northwind.orders AS o ON c.customer_id = o.customer_id
WHERE o.order_date >= '1996-01-01' AND o.order_date <= '1996-12-31'
GROUP BY 1
HAVING COUNT(DISTINCT o.order_id) >= 2
ORDER BY 1 ASC
В этом запросе мы выводим названия компаний, у которых было не менее двух заказов в 1996 году. Для этого мы объединяем таблицы customers и orders, фильтруем заказы по дате и группируем результат по названию компаний. Затем мы используем HAVING COUNT(DISTINCT o.order_id) >= 2, чтобы оставить только те компании, у которых было не менее двух заказов, и сортируем результат по возрастанию названий компаний
ВладУченик (223) 1 год назад
Добрый день ! Спасибо !!!
Άηϑρέΰ Гуру (4497) 1 год назад
переспрашивайте если что-то не поняли, я переспрошу у него.]
спроси, когда ответчикам закроют доступ? а то хен им тут делать
ВладУченик (223) 1 год назад
Добрый день ! Спасибо !!!
Александр Дядюнов Гуру (3334) 1 год назад
Предположим, что у нас есть таблица orders, содержащая информацию о заказах, а также таблица customers, содержащая информацию о компаниях-клиентах.

Мы можем использовать следующий SQL-запрос для получения списка компаний-покупателей, которые сделали не менее двух заказов в 1996 году:
 SELECT c.company_name 
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
WHERE o.order_date >= '1996-01-01' AND o.order_date <= '1996-12-31'
GROUP BY c.company_name
HAVING COUNT(DISTINCT o.order_id) >= 2
ORDER BY c.company_name ASC;
В этом запросе мы объединяем таблицы customers и orders с помощью оператора JOIN, используя customer_id в качестве ключа соединения. Затем мы фильтруем результаты по заказам, сделанным в 1996 году, с помощью условия WHERE. Затем мы группируем результаты по названию компаний с помощью оператора GROUP BY и выбираем только те компании, которые сделали не менее двух заказов в 1996 году, используя оператор HAVING. Наконец, мы сортируем результаты в лексикографическом порядке по названию компаний с помощью оператора ORDER BY.
Jurijus Zaksas Искусственный Интеллект (445772) 1 год назад
Оракловский синтаксис:

 SELECT c.company _name, count(*) 
FROM northwind.customers AS c
inner JOIN northwind.orders AS o
ON c.customer_id = o.customer_id
WHERE extract(year from o.order_date)=1996
GROUP BY c.company
having count(*)>2
ВладУченик (223) 1 год назад
Добрый день ! Спасибо !!!
Похожие вопросы