-- 建表
-- 学生表
CREATE TABLE `Student`(
`s_id` VARCHAR(20),
`s_name` VARCHAR(20) NOT NULL DEFAULT '',
`s_birth` VARCHAR(20) NOT NULL DEFAULT '',
`s_sex` VARCHAR(10) NOT NULL DEFAULT '',
PRIMARY KEY(`s_id`)
);
-- 课程表
CREATE TABLE `Course`(
`c_id` VARCHAR(20),
`c_name` VARCHAR(20) NOT NULL DEFAULT '',
`t_id` VARCHAR(20) NOT NULL,
PRIMARY KEY(`c_id`)
);
-- 教师表
CREATE TABLE `Teacher`(
`t_id` VARCHAR(20),
`t_name` VARCHAR(20) NOT NULL DEFAULT '',
PRIMARY KEY(`t_id`)
);
-- 成绩表
CREATE TABLE `Score`(
`s_id` VARCHAR(20),
`c_id` VARCHAR(20),
`s_score` INT(3),
PRIMARY KEY(`s_id`,`c_id`)
);
-- 插入学生表测试数据
INSERT INTO Student VALUES('01' , '赵雷' , '1990-01-01' , '男');
INSERT INTO Student VALUES('02' , '钱电' , '1990-12-21' , '男');
INSERT INTO Student VALUES('03' , '孙风' , '1990-05-20' , '男');
INSERT INTO Student VALUES('04' , '李云' , '1990-08-06' , '男');
INSERT INTO Student VALUES('05' , '周梅' , '1991-12-01' , '女');
INSERT INTO Student VALUES('06' , '吴兰' , '1992-03-01' , '女');
INSERT INTO Student VALUES('07' , '郑竹' , '1989-07-01' , '女');
INSERT INTO Student VALUES('08' , '王菊' , '1990-01-20' , '女');
-- 课程表测试数据
INSERT INTO Course VALUES('01' , '语文' , '02');
INSERT INTO Course VALUES('02' , '数学' , '01');
INSERT INTO Course VALUES('03' , '英语' , '03');
-- 教师表测试数据
INSERT INTO Teacher VALUES('01' , '张三');
INSERT INTO Teacher VALUES('02' , '李四');
INSERT INTO Teacher VALUES('03' , '王五');
-- 成绩表测试数据
INSERT INTO Score VALUES('01' , '01' , 80);
INSERT INTO Score VALUES('01' , '02' , 90);
INSERT INTO Score VALUES('01' , '03' , 99);
INSERT INTO Score VALUES('02' , '01' , 70);
INSERT INTO Score VALUES('02' , '02' , 60);
INSERT INTO Score VALUES('02' , '03' , 80);
INSERT INTO Score VALUES('03' , '01' , 80);
INSERT INTO Score VALUES('03' , '02' , 80);
INSERT INTO Score VALUES('03' , '03' , 80);
INSERT INTO Score VALUES('04' , '01' , 50);
INSERT INTO Score VALUES('04' , '02' , 30);
INSERT INTO Score VALUES('04' , '03' , 20);
INSERT INTO Score VALUES('05' , '01' , 76);
INSERT INTO Score VALUES('05' , '02' , 87);
INSERT INTO Score VALUES('06' , '01' , 31);
INSERT INTO Score VALUES('06' , '03' , 34);
INSERT INTO Score VALUES('07' , '02' , 89);
INSERT INTO Score VALUES('07' , '03' , 98);
-- 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数
SELECT s.* ,b.`s_score` AS 01_score ,c.`s_score` AS 02_score
FROM Student s
JOIN Score b ON s.`s_id` = b.`s_id` AND b.`c_id` = '01'
LEFT JOIN Score c ON s.`s_id` = c.`s_id` AND c.`c_id` = '02'
WHERE b.`s_score` > c.`s_score`;
SELECT a.*, b.`s_score` AS 01score ,c.`s_score` AS 02score
FROM Student a, Score b, Score c
WHERE a.`s_id` = b.`s_id`
AND a.`s_id` = c.`s_id`
AND b.`c_id` = '01'
AND c.`c_id` = '02'
AND b.`s_score` > c.`s_score`;
-- 2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数
-- 3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
SELECT s.`s_id`,s.`s_name`,ROUND(AVG(sc.`s_score`),2) AS avg_score
FROM Student s
JOIN Score sc ON s.`s_id` = sc.`s_id`
GROUP BY s.`s_id`
HAVING avg_score >= 60;
-- 4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩
-- (包括有成绩的和无成绩的)
SELECT S.s_id, S.s_name, ROUND(AVG(IFNULL(sc.s_score,0)),2) AS avg_score
FROM
Student S
LEFT JOIN Score sc ON S.s_id = sc.s_id
GROUP BY s_id
HAVING avg_score < 60;
-- 5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
SELECT s.`s_id`,s.`s_name`,COUNT(sc.`c_id`) AS sum_course,SUM(sc.`s_score`) AS sum_score
FROM Student s
LEFT JOIN Score sc ON s.`s_id` = sc.`s_id`
GROUP BY s.`s_id`;
-- 6、查询"李"姓老师的数量
SELECT COUNT(t_id)
FROM Teacher t
WHERE t.`t_name` LIKE '李%';
-- 7、查询学过"张三"老师授课的同学的信息
SELECT s.*
FROM Student s
WHERE s.`s_id` IN (
SELECT sc.`s_id` FROM Teacher t,Course c ,Score sc
WHERE t.`t_name` = '张三' AND t.`t_id` = c.`t_id` AND sc.`c_id` = c.`c_id`
);
-- 8、查询没学过"张三"老师授课的同学的信息
-- 9、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
SELECT s.*
FROM Student s, Score sc1, Score sc2
WHERE s.`s_id` = sc1.`s_id` AND s.`s_id` = sc2.`s_id` AND sc1.`c_id` = 01 AND sc2.`c_id` = 02;
-- 10、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
SELECT s.*
FROM Student s
WHERE s.`s_id` IN (SELECT sc.`s_id` FROM Score sc WHERE sc.`c_id` = 01) AND s.`s_id ` NOT IN(SELECT sc.`s_id` FROM Score sc WHERE sc.`c_id` = 02);
-- 11、查询没有学全所有课程的同学的信息
SELECT s.*
FROM student s
LEFT JOIN Score sc ON sc.s_id=s.s_id
GROUP BY s.s_id
HAVING COUNT(sc.c_id)<(SELECT COUNT(*) FROM course);
SELECT *
FROM student
WHERE s_id NOT IN(
SELECT s_id
FROM score
GROUP BY s_id
HAVING COUNT(*) =(SELECT COUNT(c_id) FROM course)
);
-- 12、查询至少有一门课与学号为"01"的同学所学相同的同学的信息
SELECT s.*
FROM Student s ,Score sc
WHERE s.`s_id` = sc.`s_id` AND sc.`c_id` IN (
SELECT sc.`c_id` FROM Score sc WHERE sc.`s_id` = 01
)
GROUP BY s.`s_id`;
SELECT *
FROM student
WHERE s_id IN(
SELECT DISTINCT sc.s_id FROM score sc WHERE sc.c_id IN(SELECT sc.c_id FROM score sc WHERE sc.s_id='01')
);
-- 13、查询和"01"号的同学学习的课程完全相同的其他同学的信息
SELECT s.*
FROM Student s, Score sc
WHERE s.`s_id` = sc.`s_id` AND sc.`c_id` IN (
SELECT sc.`c_id` FROM Score sc WHERE sc.`s_id` = 01
) AND COUNT(sc.*) = (SELECT COUNT(*) FROM Score sc WHERE sc.`s_id` = 01);
-- 14、查询没学过"张三"老师讲授的任一门课程的学生姓名
SELECT s.`s_name`
FROM Student s
WHERE s.`s_id` NOT IN (
SELECT sc.`s_id` FROM Score sc ,Course c ,Teacher t WHERE t.`t_name` = '张三' AND t.`t_id` = c.`t_id` AND c.`c_id` = sc.`c_id`
);
SELECT s.s_name
FROM student s
WHERE s.s_id NOT IN (
SELECT s_id FROM score WHERE c_id =
(SELECT c_id FROM course WHERE t_id =(
SELECT t_id FROM teacher WHERE t_name = '张三')));
-- 15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
SELECT s.`s_id`,s.`s_name`, AVG(sc.`s_score`)
FROM Student s, Score sc
WHERE s.`s_id` = sc.`s_id` AND s.`s_id` IN(
SELECT sc.`s_id` FROM Score sc WHERE sc.`s_score` < 60 GROUP BY sc.`s_id` HAVING COUNT(1) >= 2
)
GROUP BY s.s_id,s.s_name;
SELECT s.s_id,s.s_name,AVG(sc.s_score)
FROM student s
LEFT JOIN score sc ON s.s_id = sc.s_id
WHERE s.s_id IN(
SELECT s_id FROM score WHERE s_score<60 GROUP BY s_id HAVING COUNT(1)>=2)
GROUP BY s.s_id,s.s_name
-- 16、检索"01"课程分数小于60,按分数降序排列的学生信息
SELECT s.*, sc.`c_id`, sc.`s_score`
FROM Student s ,Score sc
WHERE s.`s_id` = sc.`s_id` AND sc.`c_id` = '01' AND sc.`s_score` < 60
ORDER BY sc.`s_score` DESC;
-- 17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
SELECT s.`s_id`,s.`s_name`,SUM(sc.`s_score`) AS sum_score, AVG(sc.`s_score`) AS avg_score
FROM Student s, Score sc
WHERE s.`s_id` = sc.`s_id`
GROUP BY sc.`s_id`
ORDER BY avg_score DESC;
SELECT a.s_id, (SELECT s_score FROM score WHERE s_id=a.s_id AND c_id='01') AS 语文,
(SELECT s_score FROM score WHERE s_id=a.s_id AND c_id='02') AS 数学,
(SELECT s_score FROM score WHERE s_id=a.s_id AND c_id='03') AS 英语,
ROUND(AVG(s_score),2) AS 平均分
FROM score a
GROUP BY a.s_id
ORDER BY 平均分 DESC;
-- 18.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
-- 及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
SELECT sc.c_id,c.c_name,MAX(s_score),MIN(s_score),ROUND(AVG(s_score),2),
ROUND(100*(SUM(CASE WHEN sc.s_score>=60 THEN 1 ELSE 0 END)/SUM(CASE WHEN sc.s_score THEN 1 ELSE 0 END)),2) AS 及格率,
ROUND(100*(SUM(CASE WHEN sc.s_score>=70 AND sc.s_score<=80 THEN 1 ELSE 0 END)/SUM(CASE WHEN sc.s_score THEN 1 ELSE 0 END)),2) AS 中等率,
ROUND(100*(SUM(CASE WHEN sc.s_score>=80 AND sc.s_score<=90 THEN 1 ELSE 0 END)/SUM(CASE WHEN sc.s_score THEN 1 ELSE 0 END)),2) AS 优良率,
ROUND(100*(SUM(CASE WHEN sc.s_score>=90 THEN 1 ELSE 0 END)/SUM(CASE WHEN sc.s_score THEN 1 ELSE 0 END)),2) AS 优秀率
FROM score sc LEFT JOIN course c ON sc.c_id = c.c_id GROUP BY sc.c_id,c.c_name;
-- 19、按各科成绩进行排序,并显示排名
SELECT a.s_id,a.c_id,
@i:=@i +1 AS i保留排名,
@k:=(CASE WHEN @score=a.s_score THEN @k ELSE @i END) AS rank不保留排名,
@score:=a.s_score AS score
FROM (
SELECT s_id,c_id,s_score FROM score GROUP BY s_id,c_id,s_score ORDER BY s_score DESC
)a,(SELECT @k:=0,@i:=0,@score:=0)s
-- 20、查询学生的总成绩并进行排名
SELECT a.s_id,
@i:=@i+1 AS i,
@k:=(CASE WHEN @score=a.sum_score THEN @k ELSE @i END) AS rank,
@score:=a.sum_score AS score
FROM (SELECT s_id,SUM(s_score) AS sum_score FROM score GROUP BY s_id ORDER BY sum_score DESC)a,
(SELECT @k:=0,@i:=0,@score:=0)s
-- 21、查询不同老师所教不同课程平均分从高到低显示
SELECT c.c_id,t.t_id,t.t_name ,AVG(sc.s_score) AS avg_score
FROM Score sc ,Teacher t, Course c
WHERE t.t_id = c.t_id AND c.c_id = sc.c_id
GROUP BY c.c_id,t.t_id,t.t_name
ORDER BY avg_score DESC;
SELECT c.t_id,t.t_name,c.c_id,ROUND(AVG(s_score),2) AS avg_score
FROM course c
LEFT JOIN score sc ON c.c_id=sc.c_id
LEFT JOIN teacher t ON c.t_id=t.t_id
GROUP BY c.c_id,c.t_id,t.t_name
ORDER BY avg_score DESC;
-- 22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
SELECT d.*,c.排名,c.s_score,c.c_id FROM (
SELECT a.s_id,a.s_score,a.c_id,@i:=@i+1 AS 排名 FROM score a,(SELECT @i:=0)s WHERE a.c_id='01'
ORDER BY a.s_score DESC
)c
LEFT JOIN student d ON c.s_id=d.s_id
WHERE 排名 BETWEEN 2 AND 3
UNION
SELECT d.*,c.排名,c.s_score,c.c_id FROM (
SELECT a.s_id,a.s_score,a.c_id,@j:=@j+1 AS 排名 FROM score a,(SELECT @j:=0)s WHERE a.c_id='02'
ORDER BY a.s_score DESC
)c
LEFT JOIN student d ON c.s_id=d.s_id
WHERE 排名 BETWEEN 2 AND 3
UNION
SELECT d.*,c.排名,c.s_score,c.c_id FROM (
SELECT a.s_id,a.s_score,a.c_id,@k:=@k+1 AS 排名 FROM score a,(SELECT @k:=0)s WHERE a.c_id='03'
ORDER BY a.s_score DESC
)c
LEFT JOIN student d ON c.s_id=d.s_id
WHERE 排名 BETWEEN 2 AND 3;
-- 23、统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比
SELECT DISTINCT f.c_name,a.c_id,b.`85-100`,b.百分比,c.`70-85`,c.百分比,d.`60-70`,d.百分比,e.`0-60`,e.百分比 FROM score a
LEFT JOIN (SELECT c_id,SUM(CASE WHEN s_score >85 AND s_score <=100 THEN 1 ELSE 0 END) AS `85-100`,
ROUND(100*(SUM(CASE WHEN s_score >85 AND s_score <=100 THEN 1 ELSE 0 END)/COUNT(*)),2) AS 百分比
FROM score GROUP BY c_id)b ON a.c_id=b.c_id
LEFT JOIN (SELECT c_id,SUM(CASE WHEN s_score >70 AND s_score <=85 THEN 1 ELSE 0 END) AS `70-85`,
ROUND(100*(SUM(CASE WHEN s_score >70 AND s_score <=85 THEN 1 ELSE 0 END)/COUNT(*)),2) AS 百分比
FROM score GROUP BY c_id)c ON a.c_id=c.c_id
LEFT JOIN (SELECT c_id,SUM(CASE WHEN s_score >60 AND s_score <=70 THEN 1 ELSE 0 END) AS `60-70`,
ROUND(100*(SUM(CASE WHEN s_score >60 AND s_score <=70 THEN 1 ELSE 0 END)/COUNT(*)),2) AS 百分比
FROM score GROUP BY c_id)d ON a.c_id=d.c_id
LEFT JOIN (SELECT c_id,SUM(CASE WHEN s_score >=0 AND s_score <=60 THEN 1 ELSE 0 END) AS `0-60`,
ROUND(100*(SUM(CASE WHEN s_score >=0 AND s_score <=60 THEN 1 ELSE 0 END)/COUNT(*)),2) AS 百分比
FROM score GROUP BY c_id)e ON a.c_id=e.c_id
LEFT JOIN course f ON a.c_id = f.c_id;
-- 24、查询学生平均成绩及其名次
SELECT a.s_id,
@i:=@i+1 AS '不保留空缺排名',
@k:=(CASE WHEN @avg_score=a.avg_s THEN @k ELSE @i END) AS '保留空缺排名',
@avg_score:=avg_s AS '平均分'
FROM (SELECT s_id,ROUND(AVG(s_score),2) AS avg_s FROM score GROUP BY s_id ORDER BY avg_s DESC)a,(SELECT @avg_score:=0,@i:=0,@k:=0)b;
-- 25、查询各科成绩前三名的记录
-- 1.选出b表比a表成绩大的所有组
-- 2.选出比当前id成绩大的 小于三个的
SELECT a.s_id,a.c_id,a.s_score
FROM score a
LEFT JOIN score b ON a.c_id = b.c_id AND a.s_score<b.s_score
GROUP BY a.s_id,a.c_id,a.s_score
HAVING COUNT(b.s_id)<3
ORDER BY a.c_id,a.s_score DESC;
-- 26、查询每门课程被选修的学生数
SELECT c_id, COUNT(s_id)
FROM Score sc
GROUP BY c_id;
-- 27、查询出只有两门课程的全部学生的学号和姓名
SELECT s.`s_id`,s.`s_name`
FROM Student s
WHERE s.`s_id` IN(
SELECT sc.`s_id` FROM Score sc GROUP BY sc.`s_id` HAVING COUNT(*) = 2
);
-- 28、查询男生、女生人数
SELECT s.`s_sex`,COUNT(*) AS '人数'
FROM student s
GROUP BY s.`s_sex`;
-- 29、查询名字中含有"风"字的学生信息
SELECT *
FROM Student s
WHERE s.`s_name` LIKE '%风%';
-- 30、查询同名同性学生名单,并统计同名人数
SELECT a.s_name,a.s_sex,COUNT(*)
FROM student a JOIN student b ON a.s_id !=b.s_id AND a.s_name = b.s_name AND a.s_sex = b.s_sex
GROUP BY a.s_name,a.s_sex;
-- 31、查询1990年出生的学生名单
SELECT s.`s_name`
FROM Student s
WHERE s.`s_birth` BETWEEN '1990-01-01' AND '1990-12-31'
GROUP BY s.`s_id`;
SELECT s_name
FROM Student
WHERE s_birth LIKE '1990%';
-- 32、查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
SELECT sc.`c_id`,ROUND(AVG(sc.`s_score`),2) AS avg_score
FROM Score sc
GROUP BY sc.`c_id`
ORDER BY avg_score DESC, sc.`c_id`;
-- 33、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
SELECT s.`s_id`,s.`s_name`, ROUND(AVG(sc.`s_score`),2) AS avg_score
FROM Student s,Score sc
WHERE s.`s_id` = sc.`s_id`
GROUP BY s.`s_id`
HAVING avg_score >= 85;
SELECT sc.s_id,s.s_name,ROUND(AVG(sc.s_score),2) AS avg_score
FROM score sc
LEFT JOIN student s ON sc.s_id=s.s_id
GROUP BY s_id
HAVING avg_score>=85;
-- 34、查询课程名称为"数学",且分数低于60的学生姓名和分数
SELECT s.`s_name`, sc.`s_score`
FROM Student s,Score sc, Course c
WHERE c.`c_name` = '数学' AND sc.`s_score` < 60 AND s.`s_id` = sc.`s_id`;
SELECT s.s_name,sc.s_score
FROM score sc
JOIN student s ON s.s_id=sc.s_id
WHERE sc.c_id=(
SELECT c_id FROM course WHERE c_name ='数学') AND sc.s_score<60;
-- 35、查询所有学生的课程及分数情况;
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;
-- 36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;
SELECT s.`s_name`, c.`c_name`,sc.`s_score`
FROM Score sc
LEFT JOIN Student s ON sc.`s_id` = s.`s_id`
LEFT JOIN Course c ON c.`c_id` = sc.`c_id`
WHERE sc.`s_score` > 70;
-- 37、查询不及格的课程
SELECT sc.`s_id`,sc.`c_id`,c.`c_name`,sc.`s_score`
FROM Score sc, Course c
WHERE sc.`s_score` < 60 AND c.`c_id` = sc.`c_id`;
SELECT sc.s_id,sc.c_id,c.c_name,sc.s_score
FROM score sc
LEFT JOIN course c ON sc.c_id = c.c_id
WHERE sc.s_score<60 ;
-- 38、查询课程编号为01且课程成绩在80分以上的学生的学号和姓名;
SELECT sc.s_id,s.s_name
FROM score sc
LEFT JOIN student s ON sc.s_id = b.s_id
WHERE sc.c_id = '01' AND sc.s_score>=80;
-- 39、求每门课程的学生人数
SELECT sc.`c_id`, COUNT(sc.`s_id`)
FROM Score sc
GROUP BY sc.`c_id`;
-- 40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩
SELECT s.*,MAX(sc.`s_score`)
FROM Course c,Score sc ,Student s,Teacher t
WHERE t.`t_name` = '张三' AND t.`t_id` = c.`t_id` AND c.`c_id` = sc.`c_id` AND sc.`s_id` = s.`s_id`;
SELECT s.*,sc.s_score,sc.c_id,c.c_name
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
WHERE sc.c_id =(SELECT c_id FROM course c,teacher d WHERE c.t_id=d.t_id AND d.t_name='张三')
AND sc.s_score IN (SELECT MAX(s_score) FROM score WHERE c_id='02');
-- 41、查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
SELECT DISTINCT b.s_id,b.c_id,b.s_score
FROM score a,score b
WHERE a.c_id != b.c_id AND a.s_score = b.s_score;
-- 42、查询每门功成绩最好的前两名
SELECT a.s_id,a.c_id,a.s_score
FROM score a
WHERE (SELECT COUNT(1) FROM score b WHERE b.c_id=a.c_id AND b.s_score>=a.s_score) <=2
ORDER BY a.c_id;
-- 43、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
SELECT sc.`c_id`, COUNT(*) AS total
FROM Score sc
GROUP BY sc.`c_id`
HAVING total > 5
ORDER BY total DESC, sc.`c_id`;
-- 44、检索至少选修两门课程的学生学号
SELECT sc.`s_id`,COUNT(*) AS sel
FROM Score sc
GROUP BY sc.`s_id`
HAVING COUNT(*) >=2 ;
-- 45、查询选修了全部课程的学生信息
SELECT s.*
FROM Student s
WHERE s.`s_id` IN (
SELECT sc.`s_id` FROM Score sc GROUP BY sc.`s_id` HAVING COUNT(*) = (SELECT COUNT(*) FROM Course)
);
-- 46、查询各学生的年龄
-- 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
SELECT s_birth,(DATE_FORMAT(NOW(),'%Y')-DATE_FORMAT(s_birth,'%Y') -
(CASE WHEN DATE_FORMAT(NOW(),'%m%d')>DATE_FORMAT(s_birth,'%m%d') THEN 0 ELSE 1 END)) AS age
FROM student;
-- 47、查询本周过生日的学生
SELECT * FROM student WHERE WEEK(DATE_FORMAT(NOW(),'%Y%m%d'))=WEEK(s_birth);
-- 48、查询下周过生日的学生
SELECT * FROM student WHERE WEEK(DATE_FORMAT(NOW(),'%Y%m%d'))+1 =WEEK(s_birth);
-- 49、查询本月过生日的学生
SELECT * FROM student WHERE MONTH(DATE_FORMAT(NOW(),'%Y%m%d')) =MONTH(s_birth);
-- 50、查询下月过生日的学生
SELECT * FROM student WHERE MONTH(DATE_FORMAT(NOW(),'%Y%m%d'))+1 =MONTH(s_birth);
mysql语句练习50题
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 一:表与数据 CREATE DATABASE db01; USE db01; -- 学生表 student CRE...
- 关于学生,课程,成绩,教师表 student(学号#,姓名,性别,年龄) course(课程号#,课程名,教师号#...