Задавайте вопросы, мы ответим
Вы не зашли.
Друзья, добрый день!
Обращаюсь за помощью, есть таблица (естественно упрощена, реальная под 500 млн строк).
Суть вопроса, как сгруппировать и подсчитать сумму по номерам заказов, только тех заказов, которые содержат позицию "телефон".
Делал данный запрос следующим образом - 1) находил номера заказов, которые содержат "телефон" 2) ставил фильтр только по этим заказам.
На небольших данных кейс работает, но вот на больших, чувствую, что есть решение оптимальнее. Т.к. каждую из 500 млн строк, нужно сравнить с приблизительно 100 млн строк, которые содержат телефон.
Есть ли более оптимальный способ? В sql новичок, прошу строго не судить. Заранее большое спасибо за помощь.
Номер заказ Позиция Количество
111 Холодильник 1
111 Телефон 10
111 Утюг 2
222 Холодильник 1
222 Утюг 1
333 Телефон 4
333 Стиральная машина 2
333 Микроволновка 2
444 Плита 5
444 Утюг 2
555 Телефон 9
555 Ноутбук 1
555 Мультиварка 1
Отредактированно OblivionR (23.04.2021 16:28:51)
Неактивен
1. что должен вернуть запрос на этих тестовых данных (не ясно о каких сумме и телефоне идет речь)?
2. какая версия mysql?
Неактивен
vasya, запрос на t-sql.
Вернуть должно следующее:
Заказ Сумма
111 13
222 0 (т.к. заказ не содержит телефон)
333 8
444 0 (т.к. заказ не содержит телефон)
555 11
сумма - 32
Неактивен
Неактивен
vasya, я написал в теме, что так уже делал, но это слишком долго "Делал данный запрос следующим образом - 1) находил номера заказов, которые содержат "телефон" 2) ставил фильтр только по этим заказам....."
Неактивен
скорость зависит от версии и наличия индексов
какая у вас версия?
какие индексы в таблице?
Неактивен