Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выьор строк за каждый час (Oracle 9) 
:(
    Опции темы
v0ffka
Дата 2.3.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 5.4.2009

Репутация: нет
Всего: нет



Доброго времени. Ребята, подскажите плз. начинающему как справиться с sql-запросом. 
Допустим, есть таблица

id     actionDate           amount                             moneytime                          doctype          docid
1         2009-01-09      60.0000              2009-01-09   22:54:05.000000            78              503387
2         2009-01-09      10.0000              2009-01-09   22:59:05.000000            78              503387
3         2009-01-09      39.2000              2009-01-09   09:18:08.000000            78              503387
4         2009-01-09      21.2000              2009-01-09   09:28:08.000000            78              503387
5         2009-01-09      30.6300              2009-01-09   12:38:23.000000            78              503387
6         2009-01-09      194.4600            2009-01-09   14:39:30.000000            78              503387
7         2009-01-09      29.6700              2009-01-09   14:42:56.000000            78              503387
8         2009-01-09      100.0000            2009-01-09   18:16:39.000000            78              503387
9         2009-01-09      54.6600              2009-01-09   18:41:31.000000            78              503387
...........................................................................................................................
Мне необходимо выбрать только те записи, общая сумма ЗА 1 ЧАС  больше 100. Т.е. записи смотрим записи, 1-2 их moneytime попадет в диапазон 1 час, но сумма у них меньше 100.... дальше 3-4, 5 аналогично. а 6-7 попадает по всем критериям и он попадает в выборку (выводить docid), и строки 8-9
Я написал запрос, но получается он выводит записи если он превышен 100,0 НО за целый день, а не группровка по часам

Код

select  this.docid,
this.doctype,
sum(this.amount)
from    tb_data as this
where   this.docid in (221, 593)
and this.actionDate   = '2009-01-09'
group by this.docid, this.doctype
having sum(this.amount) >= 100

PM MAIL   Вверх
DimW
Дата 2.3.2010, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



подсказка:
Код

SQL> 
SQL> select trunc(sysdate) + 1/24
  2        ,1/24 "один час"
  3    from dual
  4  /
 
TRUNC(SYSDATE)+1/24   один час
------------------- ----------
02.03.2010 1:00:00  0,04166666

PM MAIL ICQ   Вверх
DimW
Дата 3.3.2010, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



фиговая подсказка, задачу не до конца понял.
PM MAIL ICQ   Вверх
DimW
Дата 3.3.2010, 10:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1330
Регистрация: 24.2.2005
Где: Орёл

Репутация: 23
Всего: 44



Код

with test as
(select 10 docid, to_date('10.02.2009 11:01:00', 'dd.mm.yyyy hh24:mi:ss') moneytime, 51 amount from dual union all
 select 10 docid, to_date('10.02.2009 11:25:00', 'dd.mm.yyyy hh24:mi:ss') moneytime, 50 amount from dual union all
 select 10 docid, to_date('10.02.2009 13:01:00', 'dd.mm.yyyy hh24:mi:ss') moneytime, 49 amount from dual union all
 select 10 docid, to_date('10.02.2009 13:25:00', 'dd.mm.yyyy hh24:mi:ss') moneytime, 50 amount from dual)

select docid
      ,sum(amount) amount  
  from test
group by docid, trunc(moneytime, 'hh24') -- округляем до часа, если это требуется конечно...
having sum(amount) >= 100 

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.