Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер
Привет, меня зовут Питер
MySQL50-9 - вопросы 31-35
В этой статье представлены темы 31–35. Основные вопросы, связанные с этим:
- нечеткое соответствие
- Укажите несколько методов сортировки одновременно
- Объединить запрос нескольких таблиц
5 тем:
- Запрос информации о студентах 1990 г.р.
- Запрос средней оценки каждого курса, результаты сортируются в порядке убывания средней оценки; если средние оценки одинаковы, они сортируются в порядке возрастания по номеру курса c_id
- Запросите количество учеников, имя и среднюю оценку всех учеников, чья средняя оценка больше или равна 85.
- Запросить название курсаматематика, а также имена и баллы учащихся с баллами ниже 60.
- Проверить курсы и оценки всех учащихся
Тема 31
требования темы
Запрос информации о студентах 1990 г.р.
Процесс анализа
Для этой темы мы по-прежнему передаем нечеткое сопоставление, а используемые поляs_birth
Реализация SQL
select *
from Student
where s_birth like '1990%'; -- 模糊匹配
тема 32
требования темы
Запрос средней оценки каждого курса, результаты сортируются в порядке убывания средней оценки; если средние оценки одинаковы, они сортируются в порядке возрастания по номеру курса c_id
Процесс анализа
Курс: Оценка/курс
Оценка: Оценка
Группировать и сортировать по среднему баллу за каждый курс
Реализация SQL
-- 自己的方法
select
c_id
,round(avg(s_score),2) avg_score
from Score
group by 1
order by 2 desc, c_id; -- 指定字段和排序方法
Если вы хотите привести название курса, вам необходимо присоединиться к таблице курсов
-- 自己的方法
select
c.c_id
,c.c_name
,round(avg(sc.s_score),2) avg_score
from Score sc
join Course c
on sc.c_id = c.c_id
group by 1,2
order by 3 desc, c.c_id; -- 指定字段和排序方法
тема 33
требования темы
Запросите количество учеников, имя и среднюю оценку всех учеников, чья средняя оценка больше или равна 85.
Процесс анализа
- Найдите средний балл по мнению студентов, а затем выберите тех, кто набрал больше 85 баллов.
- Ссылка на информационный лист студента, чтобы узнать конкретную информацию
Реализация SQL
-- 自己的方法
select
sc.s_id
,s.s_name
,round(avg(sc.s_score),2) avg_score
from Score sc
join Student s
on sc.s_id = s.s_id
group by sc.s_id,s.s_name
having avg_score >= 85;
тема 34
требования темы
Запросить название курсаматематика, а также имена и баллы учащихся с баллами ниже 60.
Процесс анализа
1. Сначала узнайте номер студента, чей балл по математике меньше 60, из таблиц Score и Course.
2. Подключитесь к таблице Student, чтобы запросить имя
Реализация SQL
select
s.s_name
,sc.s_score
from Score sc -- 成绩表
join Student s -- 学生信息表
on sc.s_id = s.s_id
join Course c -- 课程表,指定数学
on sc.c_id = c.c_id
where c.c_name = '数学'
and sc.s_score < 60; -- 指定成绩
Посмотрите на реальные данные, действительно только один человек доволен
тема 35
требования темы
Проверить курсы и оценки всех учащихся
Процесс анализа
- Курс: Курс
- Оценка: Оценка
- Имя ученика: Студент
Через основную таблицу Score два поля и две другие таблицы могут быть подключены к запросу.
Реализация SQL
select
s.s_id
,s.s_name
,sum(case c.c_name when '语文' then sc.s_score else 0 end) as '语文' -- 语文分数
,sum(case c.c_name when '数学' then sc.s_score else 0 end) as '数学'
,sum(case c.c_name when '英语' then sc.s_score else 0 end) as '英语'
,sum(sc.s_score) as '总分' -- 每个人的总分
from Student s
left join Score sc
on s.s_id = sc.s_id
left join Course c
on sc.c_id = c.c_id
group by s.s_id, s.s_name; -- 学号和姓名的分组