@Rantanen

Как выполнить несколько вычислений в одном запросе?

Немного отойдя в сторону от CRUD внезапно осознал, что не в состоянии написать простейший запрос. Как получить несколько вычисляемых полей в одном запросе? А именно, получить общую сумму по столбцу table.summa, общую сумму за последний месяц, и среднюю сумму за последний месяц. Не могу понять сути вложенных запросов и перестроится от мышления переменными.

три столбца в таблице [table.summa], [table.start_date], [table.end_date].

Что я пробовал.
SELECT SUM(`r.summa`) as full_summa FROM (SELECT * FROM `table`) as r,
SUM(`t.summa`) as month_summa FROM (SELECT * FROM table  WHERE MONTH(`start_date`) = MONTH(DATE_ADD(NOW(), INTERVAL -1 MONTH)) AND YEAR(`start_date`) = YEAR(NOW())) as t
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Можно сделать одним запросом:
SELECT 
  SUM(`summa`) as full_summa,
  SUM(
	IF(
	  DATE_FORMAT(`start_date`, '%Y-%m') = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH), '%Y-%m'),
	  `summa`,
	  0
	)
  ) `month_summa`,
  AVG(
	IF(
	  DATE_FORMAT(`start_date`, '%Y-%m') = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -1 MONTH), '%Y-%m'),
	  `summa`,
	  null
	)
  ) `month_average`
FROM S;


Test SQL queries
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы