select sum(field1) from Table1
group by cast(HOUR(field2)/4 as int)
Помогите с запросом
Очень нужно сделать запрос, который бы вынимал эти данные за каждые 4 часа.
Ничего не могу придумать...
или если час записан в поле типа integer, то можно без HOUR.
Цитата:
Originally posted by Mongoose
SELECT * FROM table1 WHERE HOUR(поле_час) MOD 4 = 1
или если час записан в поле типа integer, то можно без HOUR.
SELECT * FROM table1 WHERE HOUR(поле_час) MOD 4 = 1
или если час записан в поле типа integer, то можно без HOUR.
Мож я чего не догнал, но ведь вроде в таком случае получится значение за каждый четвертый час, а нужно - за каждые четыре - т.е. сумма значений каждых четырех...
HR = 0 для часов от 0..3
1 для 4..7 итд.
тогда
SELECT дата, HR, ..., SUM(парам) FROM таблица GROUP BY дата, HR ORDER BY дата, HR
дата содержит только год, месяць, день
Цитата:
Originally posted by fightcat
Мож я чего не догнал, но ведь вроде в таком случае получится значение за каждый четвертый час, а нужно - за каждые четыре - т.е. сумма значений каждых четырех...
Мож я чего не догнал, но ведь вроде в таком случае получится значение за каждый четвертый час, а нужно - за каждые четыре - т.е. сумма значений каждых четырех...
Можно обойтись и без дополнительного поля.
field1 - поле, которое нужно проссумировать
field2 - время
Код:
Данный пример для SQL Server 2000. Если у тебя что-то другое, возможно надо будет изменить конструкцию cast и проверить, есть ли функция HOUR
Короче, есть, например:
10:00:00 40
11:00:00 60
12:00:00 30
13:00:00 20
14:00:00 70
15:00:00 50
16:00:00 80
17:00:00 20
И должно получится
13:00:00 150
17:00:00 220
У меня MS SQL Server 2000
Цитата:
Originally posted by fightcat
И должно получится
13:00:00 150
17:00:00 220
И должно получится
13:00:00 150
17:00:00 220
А чем тебе предложенный Sagittarius'ом запрос не нравится? Синтаксически и семантически вроде все верно. У меня просто нет под рукой MS SQL Server, чтобы проверить.
Если точно следовать твоему примеру, можно немного модифицировать предложенный вариант:
Код:
select min(field1), sum(field2) from Table1
group by cast(HOUR(field1)/4 as int)
group by cast(HOUR(field1)/4 as int)
Просто до этого видел SQL только в Access, вот и не догнал немного!