MySQL Classic 50 вопросов _ Вопросы с 26 по 30

MySQL
MySQL Classic 50 вопросов _ Вопросы с 26 по 30

Общественный номер: 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;