(004)初级大数据开发_基础SQL(21题-40题)

--21.查询男生、女生人数

--根据性别进行分组在进行统计

SELECTs.Ssex,COUNT(*) 

FROM  Student s

group by s.Ssex ;

--22.查询名字中含有「风」字的学生信息

SELECT s.*

FROM  Student s 

WHERE  s.Sname LIKE '%风%';

--23.查询同名学生名单,并统计同名人数

--对学生的姓名进行分组,如果有相同名字的学生就会分到一组,那么对分组之后进行统计大于等于2输出

SELECTs.Sname,COUNT(*) 

from Student s 

group by s.Sname 

HAVING COUNT(*)>=2;

--24.查询 1990 年出生的学生名单

--year(s.sage)--表示取年

--month(s.sage)--表示取月份

--day(s.sage)--取天数

SELECT YEAR (s.Sage),MONTH (s.Sage),DAY (s.Sage)

from Student s ;

SELECT s.* 

from Student s 

where YEAR (s.Sage) =1990;

--25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列

--查询每门课程的平均分,要对课程进行分组然后求平均数,然后进行排序

SELECT s.CId ,AVG(s.score) 

FROM  SC s 

group by s.CId 

ORDER by AVG(s.score) DESC,s.CId ; 

--26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩

--第一步:先获取平均成绩大于等于85分的同学sid

SELECT s.SId,AVG(s.score) as avgscore 

FROM SC s 

group by s.SId

HAVINGAVG(s.score)>=85;

--第二步:和sutdent表进行关联并输出平均成绩大于等于85的学生信息

SELECT s.SId ,s.Sname ,a.avgscore 

from Student s join (SELECT s.SId,AVG(s.score) as avgscore 

FROM SC s 

group by s.SId

HAVINGAVG(s.score)>=85)a 

on s.SId =a.sid ;

--27.查询课程名称为「数学」,且分数低于 60 的学生姓名和分数

--对课程进行分组并选出课程为数学且份素

SELECT s2.Sname ,s.score 

from Course c 

join SC s on c.CId =s.CId 

JOIN Student s2 on s2.SId =s.SId 

where c.Cname ='数学' and s.score <60;

--28.查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)

SELECT s.SId ,s.Sname ,s2.CId ,s2.score 

from Student s 

left join SC s2 on s.SId =s2.SId ;

--29.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数

SELECT s2.Sname ,c.Cname  ,a.score 

from Student s2

join (SELECT

FROM SC s 

where s.score >70)a on s2.SId =a.sid

join Course c on a.cid =c.CId ;

--30.查询存在不及格的课程

SELECT DISTINCT  s.CId 

FROM SC s

where s.score <60;

--31.查询课程编号为 01 且课程成绩在 80 分及以上的学生的学号和姓名

SELECT s2.SId ,s2.Sname 

FROM Student s2 

join sc s on s2.SId =s.SId 

where s.CId =01 and s.score =80;

--32.求每门课程的学生人数

SELECT s.CId ,COUNT(*)as stunum 

from SC s

group by s.CId ;

--33.成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩

--第一步:找到张三老师的id

SELECT t.TId 

FROM  Teacher t 

where t.Tname ='张三';

--第二步:通过张三老师的id去关联course去找到张三老师教授的课程id

SELECT c.CId,c.Cname 

FROM Course c 

join (SELECT t.TId 

FROM  Teacher t 

where t.Tname ='张三')a on c.TId  =a.tid ;

--第三步:

SELECT top 1 s.SId , a.cid,MAX(s.score)as maxscore

from SC s 

join (SELECT c.CId 

FROM Course c 

join (SELECT t.TId 

FROM  Teacher t 

where t.Tname ='张三')a on c.TId  =a.tid)a on s.CId =a.cid 

GROUP BY a.cid,s.SId 

ORDER BY MAX(s.score) DESC

--第四步:把第三步中找出来的sid作为临时表去关联student

SELECT DISTINCT s.*,a.cid ,a.maxscore 

from Student s 

join (SELECT top 1 s.SId , a.cid,MAX(s.score)as maxscore

from SC s 

join (SELECT c.CId 

FROM Course c 

join (SELECT t.TId 

FROM  Teacher t 

where t.Tname ='张三')a on c.TId  =a.tid)a on s.CId =a.cid 

GROUP BY a.cid,s.SId 

ORDER BY MAX(s.score) DESC)a on s.SId =a.sid; 

--法二:四张表进行关联,老师条件为张三然后进行降序排序,最后取第一个即可

SELECT DISTINCT s.*,s2.CId,s2.score 

from Student s 

join SC s2 on s.SId =s2.SId 

join Course c on s2.CId =c.CId 

join Teacher t on t.TId =c.TId 

where 1=1 

 AND t.Tname ='张三'

 AND s2.score =(SELECT MAX(s2.score) 

from Student s 

join SC s2 on s.SId =s2.SId 

join Course c on s2.CId =c.CId 

join Teacher t on t.TId =c.TId 

where 1=1 

 AND t.Tname ='张三');

--34.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩

SELECT DISTINCT  s1.* 

FROM SC s1

join SC s2 

on s1.SId =s2.SId

and s1.CId <>s2.CId 

and s1.score =s2.score; 

--35.查询每门功课成绩最好的前两名(****)

select a.sid,a.cid,a.score  from sc as

left join sc as

on a.cid = b.cid and a.score<b.score

group by a.cid, a.sid,a.score 

having count(b.cid)<2

order by a.cid;

--36.统计每门课程的学生选修人数(超过 5 人的课程才统计)

SELECTs.CId,COUNT(*) 

FROM SC s 

group by s.CId 

HAVING COUNT(*)>5; 

--37.检索至少选修两门课程的学生学号

--第一步:对sc表根据sid分组并输出选修课程大于等于2的学生sid

SELECTs.SId,COUNT(*) 

FROM SC s 

group by s.SId 

HAVINGCOUNT(*)>=2;

--关联student

SELECT s.*

from Student s 

join(SELECTs.SId,COUNT(*)asnum 

FROM SC s 

group by s.SId 

HAVINGCOUNT(*)>=2)aons.SId=a.sid;

--38.查询选修了全部课程的学生信息

--第一步:查出总的课程数

SELECT COUNT(*) 

from Course c ;

--第二步:获取选修3门课程的学生sid

SELECT s.SId ,COUNT(*) as course_nu

FROM SC s 

group by s.SId 

HAVING COUNT(*)=(SELECT COUNT(*) as course_num 

from Course c); 

--第三步:关联student表

SELECT DISTINCT  s.*

from Student s 

join (SELECT s.SId ,COUNT(*) as course_num

FROM SC s 

group by s.SId 

HAVING COUNT(*)=(SELECT COUNT(*) as course_num 

from Course c))a on a.sid =s.sid ;

--39.查询各学生的年龄,只按年份来算

--第一步:截取学生的age和当前时间(其实在真正的开发下,这个就是明细表)

SELECT YEAR(s.Sage) as stu_year,YEAR (GETDATE()) as now_date

from Student s;

--第二步:把第一步作为临时表 now_date -stu_year(数据服务层DWS)

SELECT now_date -stu_year as stu_age

from (SELECT YEAR(s.Sage) as stu_year,YEAR (GETDATE()) as now_date

from Student s) a;

--40.按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一

--第一步:获取当前月份,和学生出生月份

SELECT 

    s.SId,

MONTH(GETDATE())asnow_month,

MONTH (s.Sage) as stu_month_age,

YEAR(s.Sage) as stu_year,

YEAR(GETDATE())asnow_date

from

Student s;

--第二步:把第一步作为临时表去计算即可

SELECT a.sid , a.now_date -a.stu_year-1 as stu_age

FROM (SELECT

    s.sid,

MONTH(GETDATE())asnow_month,

MONTH (s.Sage) as stu_month_age,

YEAR(s.Sage) as stu_year,

YEAR(GETDATE())asnow_date

from

Student s)a

where a.now_month <a.stu_month_age; 

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容