Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер
MySQL50-8 - вопросы 26-30
В этой статье представлены темы с 26 по 30. Основные вопросы, связанные с этим:
- Подсчитайте количество людей после группировки
- нечеткое соответствие
- Самостоятельное присоединение к той же таблице
- использование наличия
5 тем:
- Запрос количества студентов, зачисленных на каждый курс
- Запросить номера и имена студентов всех студентов только с двумя курсами
- Проверьте количество мальчиков и девочек
- имя запроса содержит
风
Word Информация о студентах - Запросите список студентов с таким же именем и тем же полом и подсчитайте количество студентов с таким же именем
Тема 26
требования темы
Запрос количества студентов, зачисленных на каждый курс
Процесс анализа
Вопрос, который нужно решить, заключается в том, сколько людей проходит каждый курс, что очень просто.
Реализация SQL
select
c.c_id
,c.c_name
,count(s.s_id)
from Course c
join Score s
on c.c_id = s.c_id
group by c.c_id;
тема 27
требования темы
Запросить номера и имена студентов всех студентов только с двумя курсами
Процесс анализа
Курс: Оценка, количество курсов определяется c_id
Студент: Студент
Реализация SQL
Условие наличия выполняется после группировки, а оператор where выполняется до группировки.
select
s.s_id
,s.s_name
from Student s
join Score sc
on s.s_id = sc.s_id
group by 1,2
having count(sc.c_id) = 2;
тема 28
требования темы
Проверьте количество мальчиков и девочек
Процесс анализа
прямая статистикаStudent
пол в таблицеs_sex
число людей
Реализация SQL
Первый взгляд на данные: количество мужчин и женщин равно 4.
-- 自己的方法
select
count(case when s_sex='男' then 1 end) as '男'
,count(case when s_sex='女' then 1 end) as '女'
from Student;
-- 参考方法
select
s_sex
,count(s_sex) as `人数`
from Student
group by s_sex;
тема 29
требования темы
имя запроса содержит风
Word Информация о студентах
Процесс анализа
С ветром в названии мы используемНечеткое совпадение %; используется таблицаStudent
Реализация SQL
Давайте посмотрим, у кого из одноклассников ветреные имена
-- 模糊匹配:我们在两边都加上了%,考虑的是姓或者名字含有风,虽然风姓很少见
select * from Student where s_name like "%风%";
тема 30
требования темы
Запросите список студентов с таким же именем и тем же полом и подсчитайте количество студентов с таким же именем
Процесс анализа
Найдите количество студентов с таким же именем и тем же полом из таблицы Student
Реализация SQL
1. Сначала просмотрите информацию об учениках класса.
В существующих данных нет учащихся с таким именем, но при увеличении размера класса очень вероятно, что в классе появятся ученики с таким же именем.
2. Предположим, что есть ученики с таким же именем и того же пола.
select
a.s_name
,a.s_sex
,count(*)
from Student a -- 同一个表的自连接
join Student b
on a.s_id != b.s_id -- 连接的时候不能是同一个人:学号保证,每个人的学号是唯一的,其他字段都可能重复
and a.s_sex = b.s_sex -- 性别相同
and a.s_name = b.s_name -- 名字相同
group by 1,2;