Выбрать SQL-запросы, которые, возможно, составил человек, не обладающий опытом разработки

Условие:

выбери

Условие: выбери

Решение:

Предмет: Информатика
Раздел: Базы данных, язык SQL (Structured Query Language)


Задание:
Выбрать SQL-запросы, которые, возможно, составил человек, не обладающий опытом разработки.


Рассмотрим каждый запрос:


  1. *`SELECT COUNT() FROM t1000 WHERE j = 88 GROUP BY j;`**

    • Комментарий: Условие WHERE j = 88 уже ограничивает результат значением j = 88, и последующая группировка GROUP BY j становится бессмысленной, так как будет только одна группа. Хотя синтаксически корректно, это неэффективно и не имеет смысла.
    • Вывод: Составлен неопытным разработчиком.

  1. *`SELECT  FROM t1000 WHERE date_part('year', d) = 2027;`**

    • Комментарий: Корректный запрос. Используется функция date_part для извлечения года из даты d. Это нормальная практика.
    • Вывод: Составлен опытным разработчиком.

  1. *`SELECT COUNT() FROM t1000 GROUP BY j HAVING j = 8;`**

    • Комментарий: Условие HAVING j = 8 используется для фильтрации после группировки. Обычно для фильтрации значений j до группировки используют WHERE. Однако HAVING тоже допустим, особенно если нужны агрегатные функции. Тем не менее, использовать HAVING без агрегатных условий — нетипично.
    • Вывод: Скорее всего, составлен неопытным разработчиком.

  1. *`SELECT  FROM t1000 WHERE d BETWEEN '2020-01-01' AND '2020-12-31';`**

    • Комментарий: Абсолютно корректный запрос. Используется BETWEEN для фильтрации по диапазону дат.
    • Вывод: Составлен опытным разработчиком.

  1. *`SELECT  FROM t1000 WHERE i > 12;`**

    • Комментарий: Простой и корректный запрос.
    • Вывод: Составлен опытным разработчиком.

  1. *`SELECT  FROM t1000 WHERE i + 3 < 8;`**

    • Комментарий: Синтаксически корректно. Условие может быть бессмысленным в контексте, если не имеет смысла прибавлять 3 к i, но это зависит от задачи.
    • Вывод: Скорее всего, составлен опытным разработчиком.

  1. *`SELECT  FROM t1000 WHERE NOT (i < 13);`**

    • Комментарий: Это логически эквивалентно i >= 13. Хотя можно было бы написать проще, но синтаксически и логически корректно.
    • Вывод: Скорее всего, составлен опытным разработчиком.

✅ Ответ:

Выделим запросы, которые, возможно, составил неопытный разработчик:

  • [x] SELECT COUNT(*) FROM t1000 WHERE j = 88 GROUP BY j;
  • [x] SELECT COUNT(*) FROM t1000 GROUP BY j HAVING j = 8;

Эти запросы либо неэффективны, либо используют конструкции не по назначению.

Не нашли нужного вам решения? Оставьте заявку и наши авторы быстро и качественно помогут вам с решением.
Оставить заявку
Работа вам нужна срочно. Не волнуйтесь, уложимся!
  • 22423 авторов готовы помочь тебе.
  • 2402 онлайн