Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
 помогите с еще одним запросом  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17088
вот так запрос работает
SELECT to_char(cpu_usage.date_time,'YYYY/MM/DD HH24:Mi:SS') date_time2,
(
100.0*(
(cpu + nice + sistem) - (lag(cpu) over(order by date_time)+lag(nice ) over(order by date_time)+lag(sistem) over(order by date_time) )
)
/
(
(cpu + nice + sistem+idle) - (lag(cpu) over(order by date_time)+lag(nice ) over(order by date_time)+lag(sistem) over(order by date_time)+lag(idle) over(order by date_time))
)

) cpu_usage2
FROM cpu_usage
ORDER BY cpu_usage2 
если добавить условие
WHERE   cpu_usage2 > 1.0
то оно начнет ругатся - ORA-00904: "CPU_USAGE2": invalid identifier
ПОЧЕМУ????
3 сен 07, 11:54    [4611823]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116069
ScareCrow
вот так запрос работает
SELECT to_char(cpu_usage.date_time,'YYYY/MM/DD HH24:Mi:SS') date_time2,
(
100.0*(
(cpu + nice + sistem) - (lag(cpu) over(order by date_time)+lag(nice ) over(order by date_time)+lag(sistem) over(order by date_time) )
)
/
(
(cpu + nice + sistem+idle) - (lag(cpu) over(order by date_time)+lag(nice ) over(order by date_time)+lag(sistem) over(order by date_time)+lag(idle) over(order by date_time))
)

) cpu_usage2
FROM cpu_usage
ORDER BY cpu_usage2 
если добавить условие
WHERE   cpu_usage2 > 1.0
то оно начнет ругатся - ORA-00904: "CPU_USAGE2": invalid identifier
ПОЧЕМУ????

Псевдоним колонки на том же уровне вложенности может использоваться ТОЛЬКО в
ORDER BY, но не в WHERE.
Или Вашего монстра :-) пихать в WHERE, или делать еще одну обертку ...
3 сен 07, 11:57    [4611862]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17088

>может использоваться ТОЛЬКО в ORDER BY, но не в WHERE.
вот за что я не люблю Юникс, за то что серьезные вещи там сделаны, а куча
мелких удобств - фига


Posted via ActualForum NNTP Server 1.4

3 сен 07, 12:00    [4611885]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116069
dmidek

Или Вашего монстра :-) пихать в WHERE, или делать еще одну обертку ...


Первый вариант не пойдет - аналитика...
Только обертка.
3 сен 07, 12:02    [4611901]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
ScareCrow
за то что серьезные вещи там сделаны, а куча
мелких удобств - фига

Если немного подумать, нередко становится понятным тот факт, что "мелкие удобства" не сделаны не из желания навредить, а потому, что трудновыполнимы в не столь очевидных случаях либо способны привести к неудачным и неприятным последствиям. После чего "те же самые люди" будут ругаться на тот факт, что запрос, скажем,

select rownum n#, t.*
from some_table t
where n# between 26 and 50

работает не совсем так, как они ожидали.
3 сен 07, 12:08    [4611949]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116069
ScareCrow

>может использоваться ТОЛЬКО в ORDER BY, но не в WHERE.
вот за что я не люблю Юникс, за то что серьезные вещи там сделаны, а куча
мелких удобств - фига


Зачем Вы обижаете бедный Unix ? Он не виноват
3 сен 07, 12:08    [4611950]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116069
softwarer
ScareCrow
за то что серьезные вещи там сделаны, а куча
мелких удобств - фига

Если немного подумать, нередко становится понятным тот факт, что "мелкие удобства" не сделаны не из желания навредить, а потому, что трудновыполнимы в не столь очевидных случаях либо способны привести к неудачным и неприятным последствиям. После чего "те же самые люди" будут ругаться на тот факт, что запрос, скажем,

select rownum n#, t.*
from some_table t
where n# between 26 and 50

работает не совсем так, как они ожидали.


Вообще - то повод ругать всегда найдется :-)

Запрос

select rownum n#, t.*
from scott.emp t
order by n#

вполне себе синтаксически правилен.

Собачье сердце

"Если я буду мочиться мимо унитаза, и то же самое будут делать Зина и Дарья Петровна
- у меня в туалете наступит разруха"
3 сен 07, 12:15    [4611994]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
dmidek
Запрос .. вполне себе синтаксически правилен.

Ээ... только синтаксически? Он вроде бы даже вполне ожидаемо выполнится.
3 сен 07, 12:23    [4612043]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116069
softwarer
dmidek
Запрос .. вполне себе синтаксически правилен.

Ээ... только синтаксически? Он вроде бы даже вполне ожидаемо выполнится.

Для нас ожидаемо. А так это вариации знаменитого вопроса "Упорядочить таблицу,
чтобы первые строки были вверху"
3 сен 07, 12:28    [4612069]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
dmidek
Для нас ожидаемо.

Cкажу так: в том запросе, который Вы написали, нет никакой дополнительной неожиданности по сравнению с

select rownum, t.*
from scott.emp t

согласны? То есть фича "использовать алиас поля в order by" хуже не делает.
3 сен 07, 12:37    [4612136]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
dmidek


Запрос

select rownum n#, t.*
from scott.emp t
order by n#
..

для полноты абсюрда, я бы написал
select rownum n#, t.*
from scott.emp t
order by n# DESC
3 сен 07, 12:47    [4612194]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116069
softwarer
dmidek
Для нас ожидаемо.

Cкажу так: в том запросе, который Вы написали, нет никакой дополнительной неожиданности по сравнению с

select rownum, t.*
from scott.emp t

согласны? То есть фича "использовать алиас поля в order by" хуже не делает.


По такой логике, да, согласен.

Но если еще глубже копнуть, то алиас тут вообще ни при чем.
И order by rownum, и where rownum between одинаково разрешены и ведут
себя одинаково. Алиас, разрешенный в order by ведет себя аналогично.
Алиас, запрещенный в where, не ведет себя никак :-)

Поэтому, возвращаясь к Вашему первоначальному замечанию,

softwarer
Если немного подумать, нередко становится понятным тот факт, что "мелкие удобства" не сделаны не из желания навредить, а потому, что трудновыполнимы в не столь очевидных случаях либо способны привести к неудачным и неприятным последствиям.


ИМХО ИМХО ИМХО
мне все же кажется, что благородные причины не играли здесь существенной роли.
А просто бригада ORDER BY взяла на себя повышенные обязательства по сравнению
с бригадами WHERE и GROUP BY :-) (ну или наоборот)
3 сен 07, 12:52    [4612229]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17088

>понятным тот факт, что "мелкие удобства" не сделаны не из желания навредить
я знаю ;)
это так, ворчание по поводу... но после продукции Maicrosoft контраст
достаточно разительный


Posted via ActualForum NNTP Server 1.4

3 сен 07, 12:55    [4612248]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
ScareCrow

>понятным тот факт, что "мелкие удобства" не сделаны не из желания навредить
это так, ворчание по поводу... но после продукции Maicrosoft контраст
достаточно разительный

Согласно моему скромному мнению человек, давший себе труд поработать в unix и пересевший обратно за windows нередко начинает тосковать о куче мелких удобств, коих так много в никсе но так мало в windows...
Я грущу когда вижу как коллеги на win из каталога в каталог ходят секунд по 10 усердного мышекликанья...
А когда это надо делать снова, снова и снова - то хочется плакать, глядя на их мучения :)
И подобных "мелочей" довольно много - гуево-мышевозильная концепция отнюдь не универсальна.
3 сен 07, 13:07    [4612333]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
Bely
Member

Откуда: Москва
Сообщений: 1903
ScareCrow

>понятным тот факт, что "мелкие удобства" не сделаны не из желания навредить
я знаю ;)
это так, ворчание по поводу... но после продукции Maicrosoft контраст
достаточно разительный
Аналогичный контраст был после пользования UNIX-ов и продуктов фирмы Oracle.

Причем в большинстве случаев контраст был не в пользу MS.
3 сен 07, 13:12    [4612375]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17088

>andrey_anonymous
>Bely
собствено это все дело привычки...


Posted via ActualForum NNTP Server 1.4

3 сен 07, 13:19    [4612428]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
andrey_anonymous
ScareCrow

>понятным тот факт, что "мелкие удобства" не сделаны не из желания навредить
это так, ворчание по поводу... но после продукции Maicrosoft контраст
достаточно разительный

Согласно моему скромному мнению человек, давший себе труд поработать в unix и пересевший обратно за windows нередко начинает тосковать о куче мелких удобств, коих так много в никсе но так мало в windows...
Я грущу когда вижу как коллеги на win из каталога в каталог ходят секунд по 10 усердного мышекликанья...
А когда это надо делать снова, снова и снова - то хочется плакать, глядя на их мучения :)
И подобных "мелочей" довольно много - гуево-мышевозильная концепция отнюдь не универсальна.

+1
И даже не в том дело, что в виндовозе нет консольных приложений или шелла. Просто смолоду укушенные мышегуем (если иммунитета не имеют ;) так и живут.
3 сен 07, 13:29    [4612493]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
dmidek
Алиас, запрещенный в where, не ведет себя никак :-)

Именно. А давайте подумаем, какого поведения мы бы от него ожидали. Уверен, "нормальный человек" полагал бы, что из цепочки "есть выражение - назвали его n# - употребили n#" следует, что выражение вычислено и его результат подставлен в место ссылки на n#. Эта точка зрения несовместима с where; добавить алиасы в where мы можем только "подстановкой самого выражения", что и иллюстрирует мой изначальный пример - нормальный человек, читая такое, "не раскроет мысленно" алиас, не подставит выражение из него и будет удивлен результатом.

dmidek
мне все же кажется, что благородные причины не играли здесь существенной роли.
А просто бригада ORDER BY взяла на себя повышенные обязательства по сравнению
с бригадами WHERE и GROUP BY :-) (ну или наоборот)

Я все же надеюсь, что у оракла бригада по пришиванию пуговиц на левый рукав не объявляет соцсоревнования с бригадой по пришиванию пуговиц на правый рукав.
3 сен 07, 13:33    [4612514]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17088
>смолоду укушенные мышегуем
это все конечно прикольно, но запрос
select cpu_usage2  from (SELECT 
(100.0*(
(cpu + nice + sistem) - (lag(cpu) over(order by date_time)+lag(nice ) over(order by date_time)+lag(sistem) over(order by date_time) )
)
/
(
(cpu + nice + sistem+idle) - (lag(cpu) over(order by date_time)+lag(nice ) over(order by date_time)+lag(sistem) over(order by date_time)+lag(idle) over(order by date_time))
)) cpu_usage2 

) 
FROM cpu_usage
WHERE   cpu_usage.date_time >= sysdate- 1
)
WHERE   cpu_usage2 >1.0
говорит : ORA-00923: FROM keyword not found where expected
а мозги уже кипят. что теперь не так?
3 сен 07, 13:37    [4612550]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
Proteus
Member

Откуда:
Сообщений: 1348
SELECT cpu_usage2
  FROM (SELECT (100.0 * ((cpu + nice + sistem) -
               (lag(cpu) over(ORDER BY date_time) + lag(nice)
                over(ORDER BY date_time) + lag(sistem)
                over(ORDER BY date_time))) /
               ((cpu + nice + sistem + idle) -
               (lag(cpu) over(ORDER BY date_time) + lag(nice)
                over(ORDER BY date_time) + lag(sistem)
                over(ORDER BY date_time) + lag(idle)
                over(ORDER BY date_time)))) cpu_usage2
        
        )
  FROM cpu_usage
 WHERE cpu_usage.date_time >= SYSDATE - 1)
 WHERE cpu_usage2 > 1.0
3 сен 07, 13:40    [4612575]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
ScareCrow
что теперь не так?

Скобки.
3 сен 07, 13:40    [4612577]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18337
ScareCrow
а мозги уже кипят. что теперь не так?

SQL> select 1/2 from dual;

       1/2
----------
       0.5

SQL> select 1
  2  /

select 1

ORA-00923: FROM keyword not found where expected

SQL> 2 from dual;

2 from dual

ORA-00900: invalid SQL statement

SQL> 
3 сен 07, 13:41    [4612580]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17088

уу.. эти мне скобки.


Posted via ActualForum NNTP Server 1.4

3 сен 07, 13:41    [4612582]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
Proteus
Member

Откуда:
Сообщений: 1348
теперь видиш?
Пиши красиво и мозги кипеть не будут.
3 сен 07, 13:41    [4612586]     Ответить | Цитировать Сообщить модератору
 Re: помогите с еще одним запросом  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 17088

>proteus
у тя тоже скобки ;)


Posted via ActualForum NNTP Server 1.4

3 сен 07, 13:41    [4612590]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Oracle Ответить