当前位置: 首页 > news >正文

展览会建设网站平台的作用/net的网站建设

展览会建设网站平台的作用,net的网站建设,做网站的主要作用,九亿app开发公司Spark写MySQL经典五十题 Mysql的版本为8.0.29 文章目录Spark写MySQL经典五十题创建表及信息录入连接数据库1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数2.查询"01"课程比"02"课程成绩低的学生的信息及课程分数3.查询平均成…

Spark写MySQL经典五十题

Mysql的版本为8.0.29


文章目录

  • Spark写MySQL经典五十题
  • 创建表及信息录入
  • 连接数据库
  • 1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数
  • 2.查询"01"课程比"02"课程成绩低的学生的信息及课程分数
  • 3.查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
  • 4.查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩
  • 5.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
  • 6.查询"李"姓老师的数量
  • 7.查询学过"张三"老师授课的同学的信息
  • 8.查询没学过"张三"老师授课的同学的信息
  • 9.查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
  • 10.查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
  • 11.查询没有学全所有课程的同学的信息
  • 12.查询至少有一门课与学号为"01"的同学所学相同的同学的信息
  • 13.查询和"01"号的同学学习的课程完全相同的其他同学的信息
  • 14.查询没学过"张三"老师讲授的任一门课程的学生姓名
  • 15.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
  • 16.检索"01"课程分数小于60,按分数降序排列的学生信息
  • 17.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
  • 18.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
  • 19.按各科成绩进行排序,并显示排名
  • 20.查询学生的总成绩并进行排名
  • 21.查询不同老师所教不同课程平均分从高到低显示
  • 22.查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
  • 23.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比
  • 24.查询学生平均成绩及其名次
  • 25.查询各科成绩前三名的记录
  • 26.查询每门课程被选修的学生数
  • 27.查询出只有两门课程的全部学生的学号和姓名
  • 28.查询男生、女生人数
  • 29.查询名字中含有"风"字的学生信息
  • 30.查询同名同姓学生名单,并统计同名人数
  • 31.查询1990年出生的学生名单
  • 32.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
  • 33.查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
  • 34.查询课程名称为"数学",且分数低于60的学生姓名和分数
  • 35.查询所有学生的课程及分数情况
  • 36.查询任何一门课程成绩在70分以上的学生姓名、课程名称和分数
  • 37.查询课程不及格的学生
  • 38.查询课程编号为01且课程成绩在80分以上的学生的学号和姓名
  • 39.求每门课程的学生人数
  • 40.查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩
  • 41.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
  • 42.查询每门课程成绩最好的前三名
  • 43.统计每门课程的学生选修人数(超过5人的课程才统计)要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
  • 44.检索至少选修两门课程的学生学号
  • 45.查询选修了全部课程的学生信息
  • 46.查询各学生的年龄(周岁)
  • 47.查询本周过生日的学生
  • 48.查询下周过生日的学生
  • 49.查询本月过生日的学生
  • 50.查询下月过生日的学生


创建表及信息录入

# 学生表
create table student
(sid   varchar(10),sname varchar(32),saged datetime,ssex  varchar(10)
) comment '学生表';
# 学生表插入数据
insert into student(sid,sname,saged,ssex)values('01' , '赵雷' , '1990-01-01' , '男');
insert into student(sid,sname,saged,ssex)values('02' , '钱电' , '1990-12-21' , '男');
insert into student(sid,sname,saged,ssex)values('03' , '孙风' , '1990-05-20' , '男');
insert into student(sid,sname,saged,ssex)values('04' , '李云' , '1990-08-06' , '男');
insert into student(sid,sname,saged,ssex)values('05' , '周梅' , '1991-12-01' , '女');
insert into student(sid,sname,saged,ssex)values('06' , '吴兰' , '1992-03-01' , '女');
insert into student(sid,sname,saged,ssex)values('07' , '郑竹' , '1989-07-01' , '女');
insert into student(sid,sname,saged,ssex)values('08' , '王菊' , '1990-01-20' , '女');-- -------------------------------------------------------------
# 课程表
create table course
(cid   varchar(10),cname varchar(32),tid   varchar(10)
) comment '课程表';
# 插入课程数据
insert into course(cid,cname,tid)values('01' , '语文' , '02');
insert into course(cid,cname,tid)values('02' , '数学' , '01');
insert into course(cid,cname,tid)values('03' , '英语' , '03');-- --------------------------------------------------------
# 教师表
create table teacher
(tid   varchar(10),tname varchar(32)
)comment '教师表';
# 插入教师表信息
insert into teacher(tid,tname)values('01' , '张三');
insert into teacher(tid,tname)values('02' , '李四');
insert into teacher(tid,tname)values('03' , '王五');-- --------------------------------------------------
# 成绩表
create table sc
(sid   varchar(10),cid   varchar(10),score int(30)
)comment '成绩表';
# 插入成绩信息insert into SC values('01','01',80);
insert into SC values('01','02',90);
insert into SC values('01','03',99);
insert into SC values('02','01',70);
insert into SC values('02','02',60);
insert into SC values('02','03',80);
insert into SC values('03','01',80);
insert into SC values('03','02',80);
insert into SC values('03','03',80);
insert into SC values('04','01',50);
insert into SC values('04','02',30);
insert into SC values('04','03',20);
insert into SC values('05','01',76);
insert into SC values('05','02',87);
insert into SC values('06','01',31);
insert into SC values('06','03',34);
insert into SC values('07','02',89);
insert into SC values('07','03',98);

在这里插入图片描述

连接数据库

def main(args: Array[String]): Unit = {val spark: SparkSession = SparkSession.builder().master("local[*]").appName("mysql").getOrCreate()import spark.implicits._val driver = "com.mysql.cj.jdbc.Driver"val url = "jdbc:mysql://192.168.95.130:3306/mysql50"val user = "root"val password = "root"val prop = new Properties()prop.setProperty("driver",driver)prop.setProperty("user",user)prop.setProperty("password",password)val courseTable = "course"val scoreTable = "sc"val studentTable = "student"val teacherTable = "teacher"val courseDf: DataFrame = spark.read.jdbc(url, courseTable, prop)val scDf: DataFrame = spark.read.jdbc(url, scoreTable, prop)val studentDf: DataFrame = spark.read.jdbc(url, studentTable, prop)val teacherDf: DataFrame = spark.read.jdbc(url, teacherTable, prop)}}  

1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数

    scDf.as("s1").join(scDf.as("s2"), "sid").filter("s1.cid=01 and s2.cid=02 and s1.score>s2.score").join(studentDf, "sid").show

在这里插入图片描述

2.查询"01"课程比"02"课程成绩低的学生的信息及课程分数

    scDf.as("s1").join(scDf.as("s2"), "sid").filter("s1.cid=01 and s2.cid=02 and s1.score<s2.score").join(studentDf, "sid").show

在这里插入图片描述

3.查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩

    val frame: DataFrame = scDf.as("s1").groupBy("sid").avg("score").join(studentDf.as("s2"), "sid").filter($"avg(score)">=60)frame.show()

在这里插入图片描述

4.查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩

      studentDf.as("s1").join(scDf.as("s2").groupBy("sid").avg("score"),Seq("sid"),"left_outer").filter($"avg(score)"<60 ||$"avg(score)".isNull).show()

在这里插入图片描述

5.查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩

    studentDf.join(scDf.groupBy("sid").count(), Seq("sid"), "left_outer").join(scDf.groupBy("sid").sum(), Seq("sid"), "left_outer").show()

在这里插入图片描述

6.查询"李"姓老师的数量

    val l: Long = teacherDf.filter($"tname".like("李%")).count()println(l)

在这里插入图片描述

7.查询学过"张三"老师授课的同学的信息

    val value: Dataset[Row] = scDf.join(courseDf, "cid").join(teacherDf, "tid").join(studentDf, "sid").filter($"tname".equalTo("张三"))value.show()

在这里插入图片描述

8.查询没学过"张三"老师授课的同学的信息

  scDf.join(teacherDf.filter("tname ='张三' ").join(courseDf,"tid"),"cid").join(studentDf,Seq("sid"),"right_outer").filter($"tname" isNull).show()

在这里插入图片描述

9.查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息

    studentDf.join(scDf.filter($"cid".equalTo("01")),"sid").join(scDf.filter($"cid".equalTo("02")),"sid").show()

在这里插入图片描述

10.查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息

    studentDf.join(scDf.filter("cid=2"), Seq("sid"), "leftouter").where("cid is null").join(scDf.filter("cid=1"), Seq("sid")).show()

在这里插入图片描述

11.查询没有学全所有课程的同学的信息

    studentDf.join(scDf,Seq("sid"),"left_outer").groupBy("sid").count().where("count<3").join(studentDf,"sid").show()

在这里插入图片描述

12.查询至少有一门课与学号为"01"的同学所学相同的同学的信息

    studentDf.join(scDf, "sid").as("s1").join(scDf.where("sid=01"), "cid").select("s1.sid").distinct().where("sid!=01").join(studentDf, "sid").show

在这里插入图片描述

13.查询和"01"号的同学学习的课程完全相同的其他同学的信息

    scDf.where("sid=01").as("s1").join(scDf.as("s2"), "cid").groupBy("s2.sid").count().as("s3").where(s"count=${scDf.where("sid=01").count()} and sid!=01").join(studentDf, "sid")show()

在这里插入图片描述

14.查询没学过"张三"老师讲授的任一门课程的学生姓名

      studentDf.join(scDf,"sid").join(courseDf,"cid").join(teacherDf.where("tname='张三'"),"tid").as("a").select("sid").join(studentDf.as("b"),Seq("sid"),"right_outer").where("a.sid is null").select("sname").show()

在这里插入图片描述

15.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

    scDf.where("score<60").groupBy("sid").count().where("count>=2").join(scDf,"sid").groupBy("sid").avg("score").join(studentDf,"sid").show()

在这里插入图片描述

16.检索"01"课程分数小于60,按分数降序排列的学生信息

    scDf.where("cid=01").join(studentDf,Seq("sid"),"right_outer").where("score<60 or score is null").orderBy($"score".desc).show()

在这里插入图片描述

17.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

 scDf.join(scDf.groupBy("sid").avg("score"),Seq("sid"),"left_outer").join(studentDf,"sid").orderBy($"avg(score)".desc).show()

在这里插入图片描述

18.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率

    import org.apache.spark.sql.functions._val s1: DataFrame = scDf.groupBy("cid").agg(max("score").as("maxscore"), min("score").as("minscore"), avg("score").as("avgscore"), count("score").as("num"))//及格率val jige: DataFrame = scDf.rdd.map(x => {if (x.getAs("score").toString.toInt > 60) (x(1).toString, 1) else (x(1).toString, 0)}).reduceByKey(_ + _).toDF("cid", "jige")//中等率val zhongdeng: DataFrame = scDf.rdd.map(x => {if (x.getAs("score").toString.toInt > 70) (x(1).toString, 1) else (x(1).toString, 0)}).reduceByKey(_ + _).toDF("cid", "zhongdeng")//优良率val youliang: DataFrame = scDf.rdd.map(x => {if (x.getAs("score").toString.toInt > 80) (x(1).toString, 1) else (x(1).toString, 0)}).reduceByKey(_ + _).toDF("cid", "youliang")//优秀率val youxiu: DataFrame = scDf.rdd.map(x => {if (x.getAs("score").toString.toInt > 90) (x(1).toString, 1) else (x(1).toString, 0)}).reduceByKey(_ + _).toDF("cid", "youxiu")//联表s1.join(jige,"cid").join(zhongdeng,"cid").join(youliang,"cid").join(youxiu,"cid").withColumn("jigelv",col("jige")/col("num")).withColumn("zhongdenglv",col("zhongdeng")/col("num")).withColumn("youlianglv",col("youliang")/col("num")).withColumn("youxiulv",col("youxiu")/col("num")).drop("jige","zhongdeng","youxiu","youliang").show()

在这里插入图片描述

19.按各科成绩进行排序,并显示排名

 scDf.selectExpr("*","row_number() over(partition by cid order by score desc)").show()

在这里插入图片描述

20.查询学生的总成绩并进行排名

    scDf.selectExpr("*","sum(score) over(partition by sid) as sumscore").dropDuplicates("sid").selectExpr("*","row_number() over(order by sumscore desc)").show()

在这里插入图片描述

21.查询不同老师所教不同课程平均分从高到低显示

    scDf.join(courseDf,"cid").join(teacherDf,"tid").groupBy("tid","cid").avg("score").orderBy($"avg(score)".desc).show()

在这里插入图片描述

22.查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

    scDf.selectExpr("*","row_number() over(partition by cid order by score desc) num").where("num between 2 and 3").join(studentDf,"sid").show()

在这里插入图片描述

23.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比

    //分段val fenduan = scDf.rdd.map(x=>{if(x.getAs("score").toString.toInt < 60) (x(1).toString,1)else if(x.getAs("score").toString.toInt < 70) (x(1).toString,2)else if(x.getAs("score").toString.toInt < 85) (x(1).toString,3)else (x(1).toString,4)}).toDF("cid","fenduan")//联表fenduan.groupBy("cid").count.as("f1").join(fenduan.groupBy("cid","fenduan").count.as("f2"),"cid").withColumn("percent",$"f2.count"/$"f1.count").drop($"f1.count").join(courseDf,"cid").show()

在这里插入图片描述

24.查询学生平均成绩及其名次

    scDf.groupBy("sid").avg("score").selectExpr("*",s"row_number() over(order by 'avg(score)')").show()

在这里插入图片描述

25.查询各科成绩前三名的记录

    scDf.selectExpr("*","row_number() over(partition by cid order by score desc) num").where("num<=3").show()

在这里插入图片描述

26.查询每门课程被选修的学生数

scDf.groupBy("cid").count().show()

在这里插入图片描述

27.查询出只有两门课程的全部学生的学号和姓名

    scDf.groupBy("sid").count().where("count=2").join(studentDf,"sid").show()

在这里插入图片描述

28.查询男生、女生人数

 studentDf.groupBy("ssex").count().show()

在这里插入图片描述

29.查询名字中含有"风"字的学生信息

studentDf.where("sname like '%风%'").show()

在这里插入图片描述

30.查询同名同姓学生名单,并统计同名人数

    studentDf.groupBy("sname").count().where("count>1").show()

在这里插入图片描述

31.查询1990年出生的学生名单

studentDf.where("year(saged)=1990").show()

在这里插入图片描述

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

scDf.groupBy("cid").avg("score").orderBy($"avg(score)".desc,$"cid").show()

在这里插入图片描述

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

    scDf.groupBy("sid").avg("score").where("avg(score)>=85").join(studentDf,"sid").show()

在这里插入图片描述

34.查询课程名称为"数学",且分数低于60的学生姓名和分数

    scDf.where("score<60").join(courseDf,"cid").where("cname='数学'").join(studentDf,"sid").show()

在这里插入图片描述

35.查询所有学生的课程及分数情况

studentDf.join(scDf,Seq("sid"),"left_outer").show()

在这里插入图片描述

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

    scDf.where("score>70").join(studentDf,"sid").join(courseDf,"cid").show()

在这里插入图片描述

37.查询课程不及格的学生

    scDf.where("score<60 or score is null").join(studentDf,"sid").show()

在这里插入图片描述

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

    scDf.where("cid=01 and score>80").join(studentDf,"sid").show()

在这里插入图片描述

39.求每门课程的学生人数

scDf.groupBy("cid").count().show()

在这里插入图片描述

40.查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩

    scDf.join(studentDf,"sid").join(courseDf,"cid").join(teacherDf,"tid").where("tname='张三'").join(studentDf,"sid").selectExpr("*","max(score) over() max").where("max=score").show()

在这里插入图片描述

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

    scDf.as("s1").join(scDf.as("s2"),"sid").where("s1.score=s2.score and s1.cid!=s2.cid").show()

在这里插入图片描述

42.查询每门课程成绩最好的前三名

    scDf.selectExpr("*","row_number() over(partition by cid order by score desc)rank").where("rank<=3").show()

在这里插入图片描述

43.统计每门课程的学生选修人数(超过5人的课程才统计)要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列

   scDf.groupBy("cid").count().where("count>=5").orderBy($"count".desc).orderBy("cid").show()

在这里插入图片描述

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

    scDf.groupBy("sid").count().where("count>=2").show()

在这里插入图片描述

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

    studentDf.join(scDf,Seq("sid"),"left_outer").groupBy("sid").count().where(s"count=${courseDf.select("cid").count() }").join(studentDf,"sid").show()

在这里插入图片描述

46.查询各学生的年龄(周岁)

studentDf.selectExpr("*","year(current_date)-year(saged)").show()

在这里插入图片描述

47.查询本周过生日的学生

    studentDf.where("unix_timestamp(cast(concat_ws('-',date_format(current_date(),'yyyy')," +"date_format(saged,'MM'),date_format(saged,'dd'))as date),'yyyy-MM-dd')" +" between unix_timestamp(current_date()) " +"and unix_timestamp(date_sub(next_day(current_date(),'MON'),1),'yyyy-MM-dd')").show()

在这里插入图片描述

48.查询下周过生日的学生

    studentDf.where(" unix_timestamp( cast( concat_ws('-',date_format(current_date(),'yyyy')" +",date_format(saged,'MM'),date_format(saged,'dd') ) as date ),'yyyy-MM-dd') " +"between unix_timestamp(date_sub(next_day(current_date(),'MON'),1),'yyyy-MM-dd') " +"and unix_timestamp(date_add(next_day(current_date(),'MON'),6),'yyyy-MM-dd') ").show()

在这里插入图片描述

49.查询本月过生日的学生

studentDf.where("month(saged)=month(current_date)").show()

在这里插入图片描述

50.查询下月过生日的学生

studentDf.where("month(saged)=month(current_date)+1").show()

在这里插入图片描述

http://www.jmfq.cn/news/4780729.html

相关文章:

  • 公司网站主要几方面/sem推广竞价
  • 做网站设计的公司/湖南网站设计外包费用
  • 信息发布型网站建设的特点/关键词优化公司
  • 网站怎么生成三级域名/网络推广免费网站
  • 多媒体网站开发实验报告/网络推广的方法包括
  • 高仿id97网站模板/找百度
  • wordpress与微信教程/百度seo整站优化
  • 学生作业做网站需要/手机版百度入口
  • 美工网站做兼职/谷歌优化推广
  • 合肥搭建网站/肇庆网站建设制作
  • 免费做宣传的网站是/百度软件
  • 黑龙江网站建站建设/武汉网络推广有哪些公司
  • 怎样看一个网站是哪个公司做的/优化搜狗排名
  • 个体网站建设/软文广告成功案例
  • 安阳营销型网站建设/个人如何在百度做广告
  • 在百度上做网站推广效果怎么样/可以发外链的平台
  • 中国网站建设公司图片/西安网站搭建公司
  • shopify建站费用/淘宝流量
  • 福清网站建设/培训心得体会怎么写
  • 长春建站模板厂家/本周新闻热点
  • 拍卖网站建设公司/淘宝的关键词排名怎么查
  • 学电商一般月收入多少/搜索引擎优化宝典
  • thinkphp 网站管理/建网站需要多少钱和什么条件
  • 傻瓜式在线做网站/西安百度seo推广电话
  • 网站正在建设中.../2345网址导航官网下载
  • 上街三屏网站建设/软文推广平台
  • 全网营销的四大优势/百度官方优化软件
  • 家装公司排名前十/武汉网站seo公司
  • 自己建一个网站做电子商务/互联网营销工具有哪些
  • 新浪网页版/网站排名优化怎样做