|
|
|
Вывести по 3 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу.
|
|||
|---|---|---|---|
|
#18+
Вывести по 3 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу. Буду благодарен, если кто-то сможет помочь. DEPARTS – отделы ID – идентификатор отдела NAME – название отдела MANAGERS – список менеджеров ID – идентификатор менеджера FIO – фамилия, имя, отчество DEPART – отдел (ссылка на DEPARTS.ID) SALES – таблица продаж; каждая продажа отражается в отдельной строке ID – уникальный идентификатор MANAGER – менеджер (ссылка на MANAGERS.ID) SUMMA – сумма продажи ID NAME1 Отдел продаж №12 Отдел продаж №2 ID FIO DEPART1 Иванов 12 Петров 13 Сидоров 14 Каменскайте 25 Какис Мапис 26 Панайетис 27 Кунь Лесной 18 Коровин 2 ID MANAGER SUMMA1 1 1002 2 2003 1 9004 3 4005 4 3006 5 2007 6 7008 1 4009 6 50010 3 10011 2 70012 1 50013 7 50014 8 500 Написал 2 запроса, не могу понять как их объединить и сделать ограничение внутри на вывод только 3х от каждого отдела. Заготовка общего запроса: Код: plsql 1. 2. 3. Вложенный запрос: Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 16:17 |
|
||
|
Вывести по 3 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу.
|
|||
|---|---|---|---|
|
#18+
получилось более-менее собрать, осталось только сделать так, чтобы от каждого отдела выводилось только 3 записи. Подскажите, как можно это реализовать, если у меня ограничение не на вывод кол-во итоговых строк, а на кол-во равных определённому значению на этапе поиска значений Код: plsql 1. 2. 3. 4. 5. NAME FIO SUM(SUMMA)Отдел продаж №1 Иванов 1900Отдел продаж №2 Панайетис 1200Отдел продаж №1 Петров 900Отдел продаж №2 Коровин 500Отдел продаж №1 Кунь Лесной 500Отдел продаж №1 Сидоров 500Отдел продаж №2 Каменскайте 300Отдел продаж №2 Какис Мапис 200 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 16:59 |
|
||
|
Вывести по 3 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу.
|
|||
|---|---|---|---|
|
#18+
Если это задание и впрямь для студентов, то требования повысились. Впрочем, нет. Аналитика появилась в 8-й версии, 1997 , а я как раз в это время учился в Политехе. Значит, щас сразу спрашивают. На "3 передовика" данных не набил, только на одного передовика. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 17:15 |
|
||
|
Вывести по 3 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу.
|
|||
|---|---|---|---|
|
#18+
dmdmdm, если не сложно можете ответить на возникшие вопросы? Код: plsql 1. я так понимаю данный селект берёт максимум из части определённой по параметру номер отдела, за что отвечает rn, почему он именно 1? Несколько максимальных подобным образом можно получить или только если по одному получать и потом убирать из выборки? Код: plsql 1. чем это условие отличается от прописанного через "="? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 18:46 |
|
||
|
Вывести по 3 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу.
|
|||
|---|---|---|---|
|
#18+
данный селект берёт максимум из части определённой по параметру номер отдела По-эскуэльски: сортируем по номеру строки из окна "partition by name_dep order by summ desc". По-русски: в каждой группе по имени отдела отсортируем по убыванию суммы, возьмем только 1-ю строку из отсортированных, т.е. строку с максимальной суммой по данному отделу. Несколько максимальных Код: plsql 1. чем это условие отличается от прописанного через "="? Это Oracle native syntax. ANSI syntax: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2017, 19:04 |
|
||
|
Вывести по 3 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу.
|
|||
|---|---|---|---|
|
#18+
dmdmdm, на один уровень вложенности можно уменьшить Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 11:43 |
|
||
|
Вывести по 3 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу.
|
|||
|---|---|---|---|
|
#18+
Stax, мдя , а лейтералы в оракель раззи ещё не подвезли ? http://www.sql.ru/forum/actualsearch.aspx?search=lateral&sin=0&bid=3&a=&ma=0&dt=-1&s=1&so=1 или подвозят "медленно и печально" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 12:27 |
|
||
|
Вывести по 3 лучших работника по сумме продаж из каждого отдела и упорядочить по отделу.
|
|||
|---|---|---|---|
|
#18+
мдя-сStax, мдя , а лейтералы в оракель раззи ещё не подвезли ? http://www.sql.ru/forum/actualsearch.aspx?search=lateral&sin=0&bid=3&a=&ma=0&dt=-1&s=1&so=1 или подвозят "медленно и печально" ? подвезли, но не всем кому завезли, то у них и топ н есть ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2017, 13:45 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39563605&tid=1884806]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 491ms |

| 0 / 0 |
