Работа вам нужна срочно. Не волнуйтесь, уложимся!
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
выбери
Предмет: Информатика
Раздел: Базы данных, язык SQL (Structured Query Language)
Задание:
Выбрать SQL-запросы, которые, возможно, составил человек, не обладающий опытом разработки.
Рассмотрим каждый запрос:
*`SELECT COUNT() FROM t1000 WHERE j = 88 GROUP BY j;`**
WHERE j = 88
уже ограничивает результат значением j = 88
, и последующая группировка GROUP BY j
становится бессмысленной, так как будет только одна группа. Хотя синтаксически корректно, это неэффективно и не имеет смысла.*`SELECT FROM t1000 WHERE date_part('year', d) = 2027;`**
date_part
для извлечения года из даты d
. Это нормальная практика.*`SELECT COUNT() FROM t1000 GROUP BY j HAVING j = 8;`**
HAVING j = 8
используется для фильтрации после группировки. Обычно для фильтрации значений j
до группировки используют WHERE
. Однако HAVING
тоже допустим, особенно если нужны агрегатные функции. Тем не менее, использовать HAVING
без агрегатных условий — нетипично.*`SELECT FROM t1000 WHERE d BETWEEN '2020-01-01' AND '2020-12-31';`**
BETWEEN
для фильтрации по диапазону дат.*`SELECT FROM t1000 WHERE i > 12;`**
*`SELECT FROM t1000 WHERE i + 3 < 8;`**
i
, но это зависит от задачи.*`SELECT FROM t1000 WHERE NOT (i < 13);`**
i >= 13
. Хотя можно было бы написать проще, но синтаксически и логически корректно.Выделим запросы, которые, возможно, составил неопытный разработчик:
SELECT COUNT(*) FROM t1000 WHERE j = 88 GROUP BY j;
SELECT COUNT(*) FROM t1000 GROUP BY j HAVING j = 8;
Эти запросы либо неэффективны, либо используют конструкции не по назначению.