SQL запрос. Как найти сумму повторяющихся строк?
Приветствую, прошу помощи.
Есть таблица table, в ней есть столбцы id и price.
В поле id есть много повторов.
Вывести все id и их суммы значений price, у которых сумма price больше 100 из таблицы table и отсортированную по убыванию.
То есть если есть id со значением 10 и в таблице он встречается 5 раз, то нужно посчитать сумму 5 значения поля price для id со значением 10 и эту сумму вывести новым столбцом summ_price, что бы потом оставить только строки где значения summ_price больше 100 и отсортировать по убыванию.
Надеюсь понятно объяснил.
Всё что пока получилось, это :
SELECT id, price, COUNT(*) FROM table GROUP BY id, price HAVING COUNT(*) > 1 |
SELECT id, price, COUNT(*) FROM table GROUP BY id, price HAVING COUNT(*) > 1
Привёл пример на картинке - нужно из левой получить правую(промежуточный вариант просто для понимания)
Дополнительно:
Вывести все id
GROUP BY
суммы значений price
SUM()
сумма price больше 100
HAVING
из таблицы table
FROM
отсортированную по убыванию
ORDER BY
Элементарный запрос на суммирование с группировкой:
SELECT id, SUM(price) sum_price FROM tbl GROUP BY id ORDER BY sum_price DESC; |
SELECT id, SUM(price) sum_price FROM tbl GROUP BY id ORDER BY sum_price DESC;
SQL SUM GROUP BY
- @rozhnev
Благодарю за ответ! Начинает в голове всё проясняться:)
Хотел бы уточнить, мне ещё нужно вывести только строки со значением summ_price более 100
ИспользуюHAVING COUNT(summ_price) > 100
Но выпадает ошибка - PapiRUS90, https://sqlize.online/sql/mysql57/1bf9583f16cfaf9e...
- Slava Rozhnev, спасибо Вам огромное.
Позвольте последний вопрос. Я хочу объединить данные результаты с другой таблицей с помощью JOIN
Написал следующий запрос:SELECT table2.name, table.id AS id2, table.price FROM table2 INNER JOIN table ON table2.id2 = table.id;
SELECT table2.name, table.id AS id2, table.price FROM table2 INNER JOIN table ON table2.id2 = table.id;
НО, мне нужно совместить результаты полученные на предыдущем этапе добавив поле name из таблицы table2 где table.id = table2.id2
- То есть цель получить таблицу из столбцов id/name/summ_price
- PapiRUS90, Опубликуйте свои таблицы и тестовые данные на https://sqlize.online
- Slava Rozhnev, https://sqlize.online/sql/mysql57/7329259f1b787c31...
Правда там ошибка, почему то не нравятся латинские слова. Не понимаю почему
Ещё хотел для name указать varchar, но таблица не создавалась вообще. Переделал на text - PapiRUS90, Я смотрю Вы с SQL совсем не дружите:
https://sqlize.online/sql/mysql57/6c04de9a729c0e20... - Slava Rozhnev,
Второй день его изучаю:)
Я Вам очень благодарен! Изучаю Ваши ответы, мне они очень помогли понять SQL-запросы.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для того чтобы найти сумму повторяющихся строк в SQL запросе, можно воспользоваться функцией GROUP BY и функцией SUM.
Пример SQL запроса для нахождения суммы повторяющихся строк в таблице:
SELECT column_name, SUM(column_name) as sum_column FROM table_name GROUP BY column_name HAVING COUNT(column_name) > 1;
В данном запросе мы выбираем столбец column_name из таблицы table_name, затем суммируем значения этого столбца для каждой уникальной строки с помощью функции SUM. Затем используем функцию GROUP BY для группировки строк с одинаковым значением column_name.
HAVING COUNT(column_name) > 1 условие позволяет нам выбрать только повторяющиеся строки, так как COUNT(column_name) возвращает количество строк с одинаковым значением column_name, и мы выбираем только те строки, у которых количество больше одного.
Таким образом, данный SQL запрос поможет вам найти и вывести сумму повторяющихся строк в таблице.