Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите с запросом

6.9K
25 ноября 2004 года
fightcat
17 / / 07.09.2004
Есть таблица, в которой хранятся данные о величине параметра за каждый час.
Очень нужно сделать запрос, который бы вынимал эти данные за каждые 4 часа.
Ничего не могу придумать...
7.2K
25 ноября 2004 года
Mongoose
32 / / 23.09.2004
SELECT * FROM table1 WHERE HOUR(поле_час) MOD 4 = 1

или если час записан в поле типа integer, то можно без HOUR.
6.9K
25 ноября 2004 года
fightcat
17 / / 07.09.2004
Цитата:
Originally posted by Mongoose
SELECT * FROM table1 WHERE HOUR(поле_час) MOD 4 = 1

или если час записан в поле типа integer, то можно без HOUR.



Мож я чего не догнал, но ведь вроде в таком случае получится значение за каждый четвертый час, а нужно - за каждые четыре - т.е. сумма значений каждых четырех...

368
25 ноября 2004 года
rostyslav
629 / / 13.07.2004
Нужно еще одно int поле HR
HR = 0 для часов от 0..3
1 для 4..7 итд.

тогда

SELECT дата, HR, ..., SUM(парам) FROM таблица GROUP BY дата, HR ORDER BY дата, HR

дата содержит только год, месяць, день
302
25 ноября 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by fightcat
Мож я чего не догнал, но ведь вроде в таком случае получится значение за каждый четвертый час, а нужно - за каждые четыре - т.е. сумма значений каждых четырех...


Можно обойтись и без дополнительного поля.
field1 - поле, которое нужно проссумировать
field2 - время

 
Код:
select sum(field1) from Table1
group by cast(HOUR(field2)/4 as int)

Данный пример для SQL Server 2000. Если у тебя что-то другое, возможно надо будет изменить конструкцию cast и проверить, есть ли функция HOUR
6.9K
25 ноября 2004 года
fightcat
17 / / 07.09.2004
По-моему, я просто что-то неправильно объяснил, или опять не понял :(
Короче, есть, например:

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
10
25 ноября 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by fightcat
И должно получится

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)
6.9K
26 ноября 2004 года
fightcat
17 / / 07.09.2004
Спасибо всем гигантское!
Просто до этого видел SQL только в Access, вот и не догнал немного!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог