Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
01.01.2019, 09:01
|
|||
---|---|---|---|
|
|||
Объясните логику запроса вида having + константа |
|||
#18+
Есть таблица EXAM_MARKS(EXAM_ID, STUDENT_ID, SUBJ_ID, MARK, EXAM_DATE). Необходимо определить сумму полученных студентами оценок (mark), сгруппировав значения оценок по датам экзаменов и исключив те дни, когда число студентов, сдававших в течение дня экзамены, было меньше 10 В учебнике дан следующий вариант запроса Код: sql 1. 2. 3. 4. 5. 6. 7.
Не понимаю, как к запросу подсоединено условие HAVING? Обычно, это ключевое слово отсеивает группы, сформированные с помощью GROUP BY. Тут же оно почему-то употребляется с константой, никак не связанной с GROUP BY. Да и непонятен сам смысл выражения HAVING const < const. Как тут накладывается ограничение? Например, если подзапрос вернул COUNT(MARK)=5. Тогда мы имеем HAVING 10 < 5, что всегда false. Что из этого следует? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.01.2019, 17:56
|
|||
---|---|---|---|
Объясните логику запроса вида having + константа |
|||
#18+
Dmi_tri, having это условие отсеивающее после выборки, ну и не константное условие, да и подзапрос привязывается по A.EXAM_DATE ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.01.2019, 00:08
|
|||
---|---|---|---|
|
|||
Объясните логику запроса вида having + константа |
|||
#18+
artasDmi_tri, having это условие отсеивающее после выборки да, знаю. вопрос был про синтаксическую корректность конкретного запроса. почему HAVING употреблено с константой? ведь SQL славится тем, что у него человеко читаемый синтаксис, а в данном запросе это явно нарушается. "имеющий 10 меньше, чем количество оценок" так никто не говорит. легко перестроить в человеко читаемый формат - имеющий количество оценок большее, чем 10. и тогда запрос трансформируется в такой вид: Код: sql 1. 2. 3. 4.
Запустил в воркбенч, запрос выдает тот же результат. Они абсолютно идентичны? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.01.2019, 14:10
|
|||
---|---|---|---|
|
|||
Объясните логику запроса вида having + константа |
|||
#18+
Dmi_triОни абсолютно идентичны? Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2019, 19:45
|
|||
---|---|---|---|
|
|||
Объясните логику запроса вида having + константа |
|||
#18+
Другой пример: есть таблица Сессия(ФИО, Дисциплина, Оценка). Нужно найти студентов, которые сдали все экзамены на оценку не ниже, чем 4. Написал такой запрос: Код: sql 1. 2.
В учебнике дан ответ: Код: sql 1. 2. 3.
Вопрос: зачем использовать такой перегруженный синтаксис, если можно обойтись простейшим запросом? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2019, 19:55
|
|||
---|---|---|---|
Объясните логику запроса вида having + константа |
|||
#18+
Dmi_triВопрос: зачем использовать такой перегруженный синтаксис, если можно обойтись простейшим запросом?читай задачу Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.01.2019, 20:10
|
|||
---|---|---|---|
|
|||
Объясните логику запроса вида having + константа |
|||
#18+
Да, не заметил. Но все равно задача решается простейшим запросом Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.01.2019, 03:38
|
|||
---|---|---|---|
Объясните логику запроса вида having + константа |
|||
#18+
Dmi_triЕсть таблица EXAM_MARKS(EXAM_ID, STUDENT_ID, SUBJ_ID, MARK, EXAM_DATE). Необходимо определить сумму полученных студентами оценок (mark), сгруппировав значения оценок по датам экзаменов и исключив те дни, когда число студентов, сдававших в течение дня экзамены, было меньше 10 В учебнике дан следующий вариант запроса Код: sql 1. 2. 3. 4. 5. 6. 7.
Не понимаю, как к запросу подсоединено условие HAVING? Обычно, это ключевое слово отсеивает группы, сформированные с помощью GROUP BY. Тут же оно почему-то употребляется с константой, никак не связанной с GROUP BY. Да и непонятен сам смысл выражения HAVING const < const. Как тут накладывается ограничение? Например, если подзапрос вернул COUNT(MARK)=5. Тогда мы имеем HAVING 10 < 5, что всегда false. Что из этого следует? Тут так и есть, отсеивается группа, и не константа, а поле таблицы из формируемой группы .EXAM_DATE участвует в условии корреляции подзапрос а, то есть таким образом накладывается фильтр на группу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=47&tablet=1&tid=1829381]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 141ms |
0 / 0 |