|
4 вопроса...
|
|||
---|---|---|---|
#18+
я тут потихоньку оракл пытаюсь изучать, вот какие вопросы у меня накопились: 1) что такое псевдо столбец ROWNUM? 2) какое время будет актуальным ретроспективный запрос к бд. Т.е. могу ли я потребовать с бд ее прошлогоднего состояния ? 3) Что такое таблица DUAL? ну и 4) в чем разница между having & where... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2002, 12:24 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
1 вопрос: <...> Псевдостолбцы - это дополнительные функции, которые можно вызывать только из SQL-операторов. Синтаксицески они аналогичны столбцам таблиц, однако реально псевдостолбцы совсем не похожи на них. Их скорее можно назвать частью процесса выполнения SQL-операторов.<...> <...>Псевдостолбец ROWNUM возвращает номер текущей строки. Он полезен для ограничения общего числа строк и используется в первую очередь в условиях WHERE запросов и командах SET операторов UPDATE. Значение, возвращаемое ROWNUM, имеет тип NUMBER. Например, следующий запрос возвращает только две первые строки таблицы students: select * from students where rownum < 3; ROWNUM первой строки равен 1, ROWNUM второй строки - 2 и т.д. ВНИМАНИЕ: Значение ROWNUM присваеваются строке до сортировки строк.<...> (процетировано из книги Приграммирование на языке PL/SQL) 2 вопрос: не совсем понятен. Ибо данные в Оракуле модифицируются и после commit изменения принимают силу ... ну в общем-то без сохранения предыдущих значений. Хотя возможности аудита в Оракуле имеются 3 вопрос: есть такая таблица в схеме SYS CREATE TABLE DUAL ( DUMMY VARCHAR2 (1) ) ; GRANT SELECT ON DUAL TO PUBLIC WITH GRANT OPTION; Применяется например при выборке слудующего значения из последовательностей (SEQUENCES) select my_sequence.nextval into v_my_var from dual; 4 вопрос: когда-то я задавал этот вопрос своему коллеге... но так и не понял, что это такое. А в чем разница между having & where ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2002, 12:53 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
1)rownum - те факт-ки аналог select top N ... но сначала строки выбираются, потом сорт-ся и отобра-ся 2) в оркле 9-м ввели такое. те 11-aug-01 05:08 в были некоторые данные, их поменяли, потом выполнили execute dbms_flashback.enable_at_time('11-aug-01 05:08'); и при выборке получили данные на '11-aug-01 05:08' вопрос собстно - на сколько можно отрутить.. кстати вопрос появился - как вернуться к текущим данным ... 3) ясно 4) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2002, 13:05 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
vopros 4: w WHERE nel'zja ispol'zowat' agregatnie funktii (takie kak sum, avg i t.d), a HAVING kak raz dlja etogo i xorosch. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2002, 13:10 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
2 SAA_ Насчет 4-го - это шутка ? :-) Можно, например, разными способами искать дубликаты значений колонки/набора . Интересно просто, кто каким способом пользуется (без group by ... having count(...) > 1) :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2002, 13:22 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
Нет... насчет 4 это не шутка. Я дейсвительно никогда не использовал эту функциональность... сейчас буду пробовать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2002, 14:21 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
4) в предложении WHERE нельзя напрямую использовать агрегатные ф-ии, только если не применять подзапрос ес-но. HAVING должно относиться ТОЛЬКО к агрегатам и полям, выбранным по GROUP BY Best rgrds, M.Gruber ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2002, 19:12 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
2SAA_: Вроде бы объяснял толково... В общем, WHERE фильтрует записи до группировки. А HAVING это тот же самый WHERE, но для полученный групп. То есть, ты используя HAVING ты можешь выбрать только те группы, которые удовлетворяют твоему условию, например Код: plaintext 1. 2. 3. 4.
посчитает число должников по долларам по группам, а потом отберёт только те группы, в которых суммарный долг выползает за 100 баксов . ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2002, 00:37 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
В моем конкретном случае не было дано вообще определение должников, а ты уже реализацию предлагаешь :) Между прочим, посидев и подумав мы дали весьма стройное определение должников :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2002, 11:52 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
2SAA_: Пример был придуман "на скорую руку". Просто никакой другой идеи, как продемонстрировать использование HAVING мне на ум не пришло... Кстати, интересно, сколько читателей поняли, почему в запросе стоит 10000, а речь идёт о 100 баксах? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2002, 22:40 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
на счет having и where ну а если совсем точно, то: where - отбирает записи ДО того как готов запрос, т.е. это параметр первичного выбора строк. в то время как having активизируется ПОСЛЕ того как запрос уже готов, т.е. проводится сканирование результата, вследствие чего здесь уже вовсю можно юзать count(*)<1000, sum(pay_sum)... в ранних версиях SQL, помоему, еще в interbase можно было юзать having вместо where, но это крайне не эффективно, ибо приходится делать полное сканирование таблицы, а только потом оставлять нужные строки. Современные DBMS вообще не позволяют использовать having, кроме случая group by. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2002, 16:46 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
Работа для DBA: 1) установить параметр UNDO_RETENTION = seconds (указывает, насколько далеко вы хотите откатывать свою базу) 2) выдать привелегии навроде FLASHBACK ANY TABLE, и EXECUTE на пакет DBMS_FLACHBACK 3) обеспечить необходимый размер табличного простарнства UNDO всякую инофрмацию можно смотреть здесь: V$UNDOSTAT V$ROLLSTAT V$TRANSACTION Работа для программиста DBMS_FLASHBACK.DISABLE возвращет вас к текущей версии данных (не удаляет старые данные!) можно пользоваться и в подзапросе, вместе с текущими данными SELECT MAX(salary) FROM ( SELECT * FROM employees MINUS SELECT * FROM employees AS OF TIMESTAMP TRUNC(SYSDATE) ); таким образом выберется макс. зарплата из всех добавленных сегодня сотрудников ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 13:06 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
To vSkv: думаю один читатель и один автор все-таки поняли почему 10000, а не 100 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 14:04 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
10000 вместо 100 только для избежания округления, деления и прочих непр. гадостей. (на самом деле 10000 - это кол-во центов) Я прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2002, 14:53 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
Интересно, а зачем в центах ? :-) Попытка обмануть природу и накапливающуюся ошибку округления при суммировании денюжек? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 11:09 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
это чтобы поняли только 2 человека из форума :-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2002, 11:23 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
На самом деле это действительно вынужденная мера: в соответствии с ISO8583 все суммы задаются в минимальных единицах валюты: в центах, сантимах, пфенингах. И даже в копейках. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2002, 01:50 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
Но требование по этому ISO 8583 вполне разумно! Ведь частенько на теретории бывшего союза происходили деноминации... что для системы было бы печально, если бы не волшебный показатель степени у валюты :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2002, 13:01 |
|
4 вопроса...
|
|||
---|---|---|---|
#18+
Месье SAA_, вы никогда не слышали страшную сказку про то, как белоруссы свои зайчики деноминировали??? В он-лайне, между прочим :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2002, 01:31 |
|
|
start [/forum/topic.php?fid=52&fpage=2837&tid=1992898]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 247ms |
total: | 388ms |
0 / 0 |