Как правильно составить SQL запрос?
У нас есть всего одна таблица, в которой всего два столбца (Фамилии и Оценки), их много и они могут повторяться. Задача, вывести Фамилии учеников у которых есть "двойки" , среди тех, кто имеет 10 или более "пятерок".
Дополнительно:
select distinct фамилия from одна_таблица as t0 where 10 <= (select count(1) from одна_таблица as t1 where оценка = 5 and t0.фамилия = t1.фамилия) end exists ( select 1 from одна_таблица as t1 where оценка = 2 and t0.фамилия = t1.фамилия) |
select distinct фамилия from одна_таблица as t0 where 10 <= (select count(1) from одна_таблица as t1 where оценка = 5 and t0.фамилия = t1.фамилия) end exists ( select 1 from одна_таблица as t1 where оценка = 2 and t0.фамилия = t1.фамилия)
- Выводит количество пятерок (
- поправил
- gsaw, спасибо, но теперь выводит даже тех у кого нет 2
- извиняюсь, невнимательно прочитал, добавил условие
- gsaw, спасибо, работает, только end на and поправил :)
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для правильного составления SQL запроса необходимо учитывать несколько ключевых моментов. Во-первых, необходимо определить цель запроса - какие данные вы хотите получить или изменить в базе данных. Затем следует определить, с какой таблицей или таблицами вы будете работать и какие условия необходимо применить.
Для выборки данных из базы данных используется оператор SELECT. Например, если вы хотите выбрать все поля из таблицы users, запрос будет выглядеть следующим образом:
SELECT * FROM users;
Если же вам необходимо выбрать определенные поля, то их следует указать после оператора SELECT. Например, если в таблице users есть поля id, name и email, и вы хотите получить только имена пользователей, запрос будет выглядеть так:
SELECT name FROM users;SELECT name FROM users;
Для фильтрации данных по определенным условиям используется оператор WHERE. Например, если вы хотите выбрать только активных пользователей, у которых возраст больше 18 лет, запрос будет выглядеть так:
SELECT * FROM users WHERE status = 'active' AND age > 18;
Если вам необходимо объединить данные из нескольких таблиц, используйте оператор JOIN. Например, если у вас есть таблицы users и orders, и вы хотите получить данные о пользователях и их заказах, запрос будет выглядеть так:
SELECT users.name, orders.order_id FROM users JOIN orders ON users.user_id = orders.user_id;
Также не забывайте про операторы GROUP BY, ORDER BY, LIMIT, которые позволяют группировать данные, сортировать и ограничивать количество результатов соответственно.
Важно помнить о безопасности при работе с SQL запросами. Используйте подготовленные запросы или функции для экранирования данных, чтобы избежать SQL инъекций.
Надеюсь, данная информация поможет вам правильно составить SQL запрос и решить вашу задачу. Если у вас есть дополнительные вопросы, не стесняйтесь задавать!