|
|
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Доброе время суток, господа! Не сталкивался ли кто с такой штукой: надо что-то типа (на деле гораздо сложнее) Код: plaintext 1. 2. но чтобы в count было не число, а процент (доля) от общего количества записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:10 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Вот бы еще версию Оракла указал. На Oracle 9.2 Enterprise Edition: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:17 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
А если так, на вскидку: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:22 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Check this example: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:22 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Sorry, version 8.1.7.4.1 Спасибо, такой запрос работает и в "восьмерке". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:28 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Denis Popov: Ох, Денис, Денис увлекаешься ты излишне PL/SQL :) :) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:33 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Это про заполнение таблицы в цикле? А, ерунда, просто так рука повернулась. Могу и через insert .. select, а для личных нужд давно pipelined-функция наготове, хотя это тоже pl/sql. Зато, изменив пару строк кода, могу commit'ов по дороге навставлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:41 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
to Denis Popov: Да я так к слову :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:44 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
to Denis Люблю отрабатывать такие примерчики... Если возможно краткое понятное истолкование ratio_to_report(count(*)) over() * 100 percent объясните плиз на этом конкретном примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:49 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Oracle9i Data Warehousing Guide SQL for Analysis in Data Warehouses RATIO_TO_REPORT http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96520/analysis.htm#15896 Ну а по-человечески: подсосываешь ей какое-то число, в данном случае это count(*) (классно, что можно не статическое число подсовывать, а агрегирующую функцию), и для каждой записи возвращается коэффициент "попадания".Остаелся умножить на 100 - получаем процент. ИМХО можно и не знать об этой функции, гляди остальные примеры. А можно и с ней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 17:57 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Пример SY ясен. адаптировала запрос softbuilder'а к вашему примеру Код: plaintext 1. 2. 3. 4. 5. К какаму выражению относится over ()? Что в данном случае подразумевает over? PS Смотрела как то доку по over() сходу не поняла:-( Придется попотеть потом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 18:06 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Мона еще так Подсчитывает доли различных id в разрезе общего числа строк select id, RATIO_TO_REPORT(COUNT(*)) OVER () from tst group by id; CREATE TABLE tst (name VARCHAR2(5), id VARCHAR2(5)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 18:15 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
2Violina: может здесь можно почитать: Oracle9i SQL Reference SQL Functions Analytic Functions http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/functions2a.htm#81409 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 19:15 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, вопрос был, зачем именно в этом запросе следует ставить over(). Вот без него выражение sum(count()) начинает мешать. Остается сформулировать, почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 19:20 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
BTW, analytic function RATIO_TO_REPORT is available in 8i. SY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2003, 20:01 |
|
||
|
Запрос с группировкой и процентами
|
|||
|---|---|---|---|
|
#18+
Violina В общем случае, имеем over(PARTITION BY <expr>) The PARTITION BY clause defines the groups on which the RATIO_TO_REPORT function is to be computed. If the PARTITION BY clause is absent, then the function is computed over the whole query result set. т.е. over() - операция над всем множеством. Если таблица содержит следующие значения 1 50 1 50 1 100 2 200 то запрос select id, RATIO_TO_REPORT(sum(value)) OVER () from tst group by id; вернет 1 0,5 (50+50+100)/400 2 0,5 (200)/400 а запрос select value, RATIO_TO_REPORT(sum(value)) OVER (id) from tst group by id; вернет 1 1 (50+50+100)/(50+50+100) 2 1 (200/200) Пример конечно чисто гипотетический и бесполезный, но я думаю понятный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2003, 00:28 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32158991&tid=1990603]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 346ms |

| 0 / 0 |
