Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 17.06.2021
Сообщений: 34

SELECT, который выбирает топ-3 товара

21.12.2021, 13:49. Показов 3558. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Опишите запрос SELECT, который выбирает топ-3 товара (id, name и сумму продаж по товару – total) сортируя по сумме продаж (самые большие – наверху).

У меня получается вот так:

SQL Скопировано
1
2
3
4
5
SELECT sp.id, sp.name, SUM(sp.price * sp.qty) total FROM sale_positions sp
INNER JOIN products p ON sp.product_id=p.id
GROUP BY sp.id, p.name
ORDER BY total DESC
LIMIT 3
Результат у меня выходит такой:

id name total  
5Coffee3000
6Coffee3000
7Coffee3000

Если без лимита то такой:

id name total  
6Coffee3000
5Coffee3000
7Coffee3000
3Free1200
4Free1200
8Cola1000
1Pizza1000
2Burger1000

Но должен быть таким:

id name total  
6Coffee9000
3Free2400
1Pizza1000

Как написать правильный запрос чтобы совпадал с вышеупомянутым результатом?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2021, 13:49
Ответы с готовыми решениями:

Как в Access сделать макрос,который подставляет цену товара в поле при выборе самого товара ?
Для того что бы подробнее рассказать,что именно мне надо,хотелось бы с кем то связаться по связи,для дальнейшего решения проблемы,буду...

Select выбирает только одну запись вместо столбца
command1.CommandText = @"SELECT Success FROM Plov WHERE Name = @namw AND Surname = @surname AND Age = @age"; ...

Клиент, который выбирает данные из списка..Совет.
Здравствуйте! Как быть в такой вот ситуации. У меня есть БД в которой есть куча справочников, то есть к примеру есть справочники в...

7
 Аватар для Аватар
3912 / 1425 / 500
Регистрация: 31.05.2012
Сообщений: 5,047
21.12.2021, 14:00
Лучший ответ Сообщение было отмечено Univese как решение

Решение

SQL Скопировано
1
2
3
4
5
6
SELECT sp.product_id, p.name, SUM(sp.price * sp.qty) total 
  FROM sale_positions sp
    INNER JOIN products p ON sp.product_id=p.id
  GROUP BY sp.product_id, p.name
  ORDER BY total DESC
  LIMIT 3
1
0 / 0 / 0
Регистрация: 17.06.2021
Сообщений: 34
22.12.2021, 13:26  [ТС]
Аватар, А как эту задачу правильно сделать:

Опишите запрос SELECT, который по каждому менеджеру показывает: (id, name, salary, plan, сумму продаж – total, которую совершил менеджер). Отсортируйте менеджеров по total (по убыванию). И сделайте так, чтобы если у менеджера нет продаж, то в столбце total было 0.

У меня получается так:
SQL Скопировано
1
2
3
4
5
6
7
SELECT s.id, m.name, m.salary * 1000 salary, m.plan * 1000 plan, ss.total FROM sales s
JOIN managers m ON m.id=s.manager_id
JOIN (
    SELECT sp.sale_id, SUM(sp.price * sp.qty) total FROM sale_positions sp
    GROUP BY sp.sale_id
)   ss ON s.id=ss.sale_id
ORDER BY total DESC
id name salary plan total  
4Dasha90000900003000
5Dasha90000900003000
6Sasha70000700003000
1Vasya10000002000
2Petya80000800001200
3Vanya60000600001200
7Sasha70000700001000

А должно быть так:

id name salary plan total  
4Dasha90000900006000
5Sasha70000700004000
1Vasya10000002000
2Petya80000800001200
3Vanya60000600001200
6Masha50000500000
0
 Аватар для Аватар
3912 / 1425 / 500
Регистрация: 31.05.2012
Сообщений: 5,047
22.12.2021, 13:42
тебе же по каждому менеджеру нужно бабки подбить, а у тебя там чего-то по продажам подбивается и не правильно
0
0 / 0 / 0
Регистрация: 17.06.2021
Сообщений: 34
22.12.2021, 14:32  [ТС]
Аватар, а как ноль вывести, там где нет продаж ?
0
0 / 0 / 0
Регистрация: 17.06.2021
Сообщений: 34
22.12.2021, 14:44  [ТС]
Аватар,
Миниатюры
SELECT, который выбирает топ-3 товара  
0
 Аватар для Аватар
3912 / 1425 / 500
Регистрация: 31.05.2012
Сообщений: 5,047
22.12.2021, 14:50
coalesce
1
0 / 0 / 0
Регистрация: 17.06.2021
Сообщений: 34
27.12.2021, 10:57  [ТС]
Вот правильное решение:
SQL Скопировано
1
2
3
4
5
6
7
8
9
10
m.id AS id,
  MAX(m.name  ) AS name,
  MAX(m.salary * 1000) AS salary,
  MAX(m.plan * 1000) AS plan,
  SUM(COALESCE(sale_positions.price * sale_positions.qty, 0)) AS total
FROM managers m
  LEFT JOIN sales ON (sales.manager_id = m.id) 
  LEFT JOIN sale_positions ON (sale_positions.sale_id = sales.id)
GROUP BY m.id
ORDER BY 5 DESC
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.12.2021, 10:57
Помогаю со студенческими работами здесь

Создание просто парсера, который выбирает друзей в ВК
Здравствуйте! Прошу помощи. Я начинающий программист и хотел бы написать свою первую программу, парсер друзей вк. Начал создавать через...

Запрос, который выбирает только последние десять записей из таблицы
Можно как написать запрос, который выбирает только последние десять записей таблицы? Если да то, как?

Метод, который выбирает случайным образом одно число из массива
Необходимо написать метод который: - принимает параметром массив целых чисел; - выбирает случайным образом одно число из массива; - находит...

Главный чекбокс который выбирает все остальные или снимает выделение
реализую концепцию что бы был основной чекбокс при нажатии на который выбирались все остальные, при снятии выбора - соответственно все тоже...

Запрос Distinct, который по нажатию кнопки выбирает из документа не одинаковые имена пользователей
У меня есть LINQ запрос, который по нажатию кнопки выбирает из документа не одинаковые имена пользователей, создает из них список и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер