- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
- 38
- 39
- 40
- 41
SELECT NVL(ГРУППЫ.НГ, 'ИТОГО') "ГРУППА", DECODE(GROUPING(ГРУППЫ.НГ), 0, AVG(ГРУППЫ.КОЛВО),
1, (SELECT COUNT(НОМЕР_СТУДЕНТА) FROM СТУДЕНТ)) "КОЛ-ВО СТУДЕНТОВ",
DECODE(GROUPING(ГРУППЫ.НГ), 0, ГРУППЫ.НАЗВ_НАП,
1, (SELECT LISTAGG(НАЗВАНИЕ_НАПРАВЛЕНИЯ, ', ')
WITHIN GROUP (ORDER BY НАЗВАНИЕ_НАПРАВЛЕНИЯ)
FROM НАПРАВЛЕНИЕ
WHERE КОД_НАПРАВЛЕНИЯ IN (SELECT КОД_НАПРАВЛЕНИЯ
FROM ГРУППА))) "НАЗВАНИЕ СПЕЦИАЛЬНОСТИ",
COUNT(НОМ_СТУД)"КОЛ-ВО КРУГЛЫХ ОТЛИЧНИКОВ",
NVL(LISTAGG(ФАМ, ', ') WITHIN GROUP (ORDER BY ФАМ), ' ') "ФАМИЛИИ ОТЛИЧНИКОВ"
FROM
(SELECT COUNT(*) КОЛВО, СТ.НОМЕР_ГРУППЫ НГ, НАП.НАЗВАНИЕ_НАПРАВЛЕНИЯ НАЗВ_НАП
FROM СТУДЕНТ СТ LEFT OUTER JOIN
ГРУППА ГР ON СТ.НОМЕР_ГРУППЫ=ГР.НОМЕР_ГРУППЫ
LEFT OUTER JOIN НАПРАВЛЕНИЕ НАП ON НАП.КОД_НАПРАВЛЕНИЯ=ГР.КОД_НАПРАВЛЕНИЯ
GROUP BY СТ.НОМЕР_ГРУППЫ, НАП.НАЗВАНИЕ_НАПРАВЛЕНИЯ) ГРУППЫ
LEFT OUTER JOIN
(SELECT СТ.НОМЕР_СТУДЕНТА НОМ_СТУД, СТ.НОМЕР_ГРУППЫ НОМ_ГРУП, НГ.КОД_НАПРАВЛЕНИЯ КОД_НАПР, СТ.ФАМИЛИЯ ФАМ, 5 СРЕД_ОЦЕНКА
FROM СТУДЕНТ СТ INNER JOIN ГРУППА НГ ON СТ.НОМЕР_ГРУППЫ=НГ.НОМЕР_ГРУППЫ
LEFT JOIN УЧЕБНЫЙ_ПЛАН УП ON НГ.КОД_НАПРАВЛЕНИЯ=УП.КОД_НАПРАВЛЕНИЯ
LEFT JOIN УСПЕВАЕМОСТЬ УСП ON УСП.НОМЕР_СТУДЕНТА=СТ.НОМЕР_СТУДЕНТА AND УСП.НОМЕР_ДИСЦИПЛИНЫ=УП.НОМЕР_ДИСЦИПЛИНЫ
INTERSECT
--ТАБЛИЦА "ПЕРВ"
SELECT ВТОР.НОМЕР_СТУДЕНТА, ВТОР.Н_Г, ВТОР.КОД_НАПР, ВТОР.ФАМ, ВТОР.СРЕД_ОЦЕНКА
FROM
(SELECT КОД_НАПРАВЛЕНИЯ, COUNT(НОМЕР_ДИСЦИПЛИНЫ) CNT
FROM УЧЕБНЫЙ_ПЛАН
GROUP BY КОД_НАПРАВЛЕНИЯ) ПЕРВ
INNER JOIN
(SELECT НОМЕР_СТУДЕНТА, КОД_НАПР, Н_Г, ФАМ, COUNT(НОМ_ДИСЦИП) CNT, AVG(ОЦЕН) СРЕД_ОЦЕНКА
FROM
(SELECT СТ.НОМЕР_СТУДЕНТА, ГР.НОМЕР_ГРУППЫ Н_Г, СТ.ФАМИЛИЯ ФАМ, УП.КОД_НАПРАВЛЕНИЯ КОД_НАПР, УС.НОМЕР_ДИСЦИПЛИНЫ НОМ_ДИСЦИП, УС.ОЦЕНКА ОЦЕН
FROM УСПЕВАЕМОСТЬ УС INNER JOIN СТУДЕНТ СТ ON УС.НОМЕР_СТУДЕНТА=СТ.НОМЕР_СТУДЕНТА
LEFT OUTER JOIN ГРУППА ГР ON СТ.НОМЕР_ГРУППЫ=ГР.НОМЕР_ГРУППЫ
LEFT OUTER JOIN УЧЕБНЫЙ_ПЛАН УП ON ГР.КОД_НАПРАВЛЕНИЯ=УП.КОД_НАПРАВЛЕНИЯ AND УП.НОМЕР_ДИСЦИПЛИНЫ=УС.НОМЕР_ДИСЦИПЛИНЫ )
INNER JOIN УЧЕБНЫЙ_ПЛАН УП2 ON УП2.КОД_НАПРАВЛЕНИЯ=КОД_НАПР AND УП2.НОМЕР_ДИСЦИПЛИНЫ=НОМ_ДИСЦИП
GROUP BY НОМЕР_СТУДЕНТА, КОД_НАПР, Н_Г, ФАМ) ВТОР
ON ПЕРВ.КОД_НАПРАВЛЕНИЯ=ВТОР.КОД_НАПР AND ПЕРВ.CNT=ВТОР.CNT ) ОТЛ
ON ГРУППЫ.НГ=ОТЛ.НОМ_ГРУП
GROUP BY GROUPING SETS((ГРУППЫ.НГ, ГРУППЫ.НАЗВ_НАП),());
bayan 06.12.2016 21:10 # 0
Это еще не самый ад. Бывает на 200 строк.
Но я бы не хотел такое поддерживать, тем более что писали это разные люди судя по стилю: LEFT JOIN vs LEFT OUTER JOIN :)
O____O 07.12.2016 13:36 # −2
Lokich 07.12.2016 13:58 # +2
ilgsha 07.12.2016 15:34 # 0
AnalniyTerzatel 08.12.2016 14:11 # −1
O____O 08.12.2016 14:52 # −1
Lokich 08.12.2016 18:15 # 0
bayan 08.12.2016 18:45 # 0
Lokich 09.12.2016 16:47 # 0
https://msdn.microsoft.com/ru-ru/library/x9xfsceh(v=vs.80).aspx
https://www.ibm.com/support/knowledgecenter/en/SSGU8G_12.1.0/com.ibm.sqlt.doc/ids_sqt_151.htm
bayan 09.12.2016 16:50 # 0
а я на ms-sql использовал IFNULL и почему-то думал что она там единственная
defecate-plusplus 09.12.2016 16:57 # 0
я так понимаю, уже сократили альтернативы до db2
bayan 09.12.2016 17:06 # 0
defecate-plusplus 09.12.2016 17:13 # +1
то, что это оракл у меня не было сомнений ещё и три дня назад
но сука заставлять детей называть таблицы и колонки на кириллице - это каким больным ублюдком надо быть
bayan 09.12.2016 17:14 # 0
В любой лабе есть переменные znachenie и kolichestvo
defecate-plusplus 09.12.2016 17:15 # 0
а ведь и правда может быть не оракл
ilgsha 09.12.2016 19:57 # 0
defecate-plusplus 09.12.2016 17:19 # +1
более забавно, когда такие клёвые вещи передаются во внешних API федеральных ИС
bormand 09.12.2016 19:29 # +1
Ну плюсы тоже есть - термины из предметной области остаются as-is. За границей эти федеральные ИС никому нахуй не сдались. А XML парсеры всё стерпят, хоть на японском пиши теги.