2011-12-15 2 views
2

У меня есть стол table с колонками date и total.Найти Всего за неделю

Как я могу заполнить sum из total столбец за неделю за последние 20 недель до sysdate?

+2

Почему это помечено Oracle и MySQL? Вы хотите сделать это для двух разных СУБД? – Corbin

+0

Каков тип данных столбца «дата»? Является ли это VARCHAR или DATE или TIMESTAMP? –

+0

На самом деле мне нужно сделать это от Oracle – Bishan

ответ

2
select trunc(date,'D'), sum(total) 
from table 
where date >= trunc(sysdate - 20*7, 'D') 
group by trunc(date,'D') 
order by 1 
+1

Существуют разные способы группировки дат в неделях. «W», «WW» и «IW» будут давать разные даты, хотя еженедельные агрегаты не будут отличаться. – APC

2
SELECT *, CONCAT(YEAR(`sysdate`), '/', WEEK(`sysdate`)) AS `year_week` 
FROM `table` 
GROUP BY `year_week` 
ORDER BY `year_week` DESC 
LIMIT 20; 
+0

Вам также понадобится ORDER BY для получения «последних 20 недель». –

+0

Спасибо. Ответ обновлен. – pltvs

+0

получил эту ошибку ORA-00923: ключевое слово FROM не найдено, где ожидалось – Bishan

Смежные вопросы