|
|
|
SQL - Task. Hierarchial query
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Вот текст задачи: --SQL Task: MS-6.3 /* Назовем средним сроком службы по подразделению (таблица military_units) среднее число дней службы на текущий момент всех военнослужащих (таблица staff), приписанных к этому подразделению и ко всем его дочерним подразделениям (до нижнего уровня). Для каждого из взводов (military_units.name начинается с "Platoon"), к которым приписаны военнослужащие, вывести имя взвода и средний срок службы по взводу, усеченный до дней (т.е. округленный в меньшую сторону). */ --SQL Task: MS-6.4 /* Назовем средним сроком службы по подразделению среднее число дней службы на текущий момент всех военнослужащих, приписанных к этому подразделению и ко всем его дочерним подразделениям (до нижнего уровня). Вывести название самого "старшего" подразделения, а также средний срок службы по подразделению, округленный до дней. В случае, если таких подразделений более одного, ограничить вывод первым. Примечание. Эту задачу можно решить по аналогии с задачей MS-6.3, но типичная ошибка усреднения в MS-6.3 не влияет на результат, а в данной задаче - влияет. */ Вот решение: SELECT * FROM ( SELECT tt.name, TRUNC(AVG(TO_DATE(SYSDATE)-TO_DATE(tt.consc_date))) AS period FROM ( SELECT CONNECT_BY_ROOT t.name as name, t.consc_date FROM ( SELECT mu.*, s.consc_date FROM military_units mu LEFT JOIN staff s ON mu.unit_id = s.unit_id WHERE s.consc_date IS NOT NULL ) t --START WITH t.parent_id IS NULL CONNECT BY PRIOR t.unit_id = t.parent_id ) tt GROUP BY tt.name HAVING COUNT(tt.consc_date) > 0 ORDER BY period DESC ) WHERE ROWNUM = 1 Система автоматической проверки не принимает решение. Не могу понять, почему. Прилагаю схему. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.08.2016, 13:56 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=94&tid=1831503]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
21ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 374ms |

| 0 / 0 |
