@cubooks
Web-developer

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

Здравствуйте! В общем, хотел спросить...

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

date | index
...
2014-08-27 | 4
2014-08-28 | 10
2014-08-29 | 0
....

Теперь к задаче. Требуется получить сумму всех регистраций на прошлой неделе, и на этой неделе (для сравнения). То есть мне нужны все значения пн-вс прошлой недели, и пн-вс текущей недели (при чем если сегодня четверг, то пн-чт и т.д)

Спасибо за помощь, заранее!
  • Вопрос задан
  • 3318 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега MySQL
/* Вычисление суммы  за текущую неделю */
SELECT 
	SUM(`index`) AS 'this_week'
FROM 
	`table`
WHERE 
	`date` >= DATE_SUB(NOW(), INTERVAL (WEEKDAY(NOW())) DAY) AND
	`date` <=  NOW()
;

/* Вычисление суммы  за прошлую неделю */
SELECT 
	SUM(`index`) AS 'last_week'
FROM 
	`table`
WHERE 
	`date` >= DATE_SUB(NOW(), INTERVAL (7+WEEKDAY(NOW())) DAY) AND
	`date` <=  DATE_SUB(NOW(), INTERVAL 7 DAY)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
falsebyte
@falsebyte
За последние семь дней
select sum(index) from table where date>now() - interval 7 day


Предыдущая неделя соответственно скорректировать
date>now() - interval 14 day and date<now() - interval 7 day
Ответ написан
@pihel
Sql, Oracle, pl/sql, BI, ETL, php, olap
Вариант @falsebyte одним запросом
select 
 sum(case when date>now() - interval 7 day THEN index END) as sum1,
 sum(case when date>now() - interval 14 day and date<now() - interval 7 day THEN index END) as sum2
from table
WHERE 
date>now() - interval 14 day
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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