Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Помогите составить сложный sql запрос

#mysql #sql #база_данных


Есть таблица, одним запросом хочу получить, к примеру, 2 значения - сумма значений
value и сумма значений points, но не могу понять, как составить условия для 2х значений
одновременно, возможно ли это? Вот например сумма values:

`SELECT SUM(value) AS balance FROM db WHERE id>30 AND value>1000`;


Тоже самое для points

`SELECT SUM(value) AS balance FROM db WHERE xxx=2 OR yyy=3`;


А можно ли как то объединить эти 2 запроса в один?
    SELECT SUM(value) AS balance, SUM(point) AS points FROM.... WHERE ??

Всё это при условии, что данные перекликаются и не получится просто соединить эти
2 условия в WHERE
    


Ответы

Ответ 1



Да, можно. Запихните условия where в агрегирующую функцию sum: select id, sum(if(xxx = 2 or yyy = 3, value, 0)) as balance_1, sum(if(id > 30 AND value > 1000, value, 0)) as balance_2 from db group by id

Ответ 2



Вероятно, есть решение поизящнее, но в лоб можно воспользоваться подзапросами - SELECT balance = (SELECT SUM(value) FROM db WHERE id>30 AND value>1000), points = (SELECT SUM(value) FROM db WHERE xxx=2 OR yyy=3`);

Комментариев нет:

Отправить комментарий