题目内容:

对学生选课成绩进行分析计算

题目要求:

(1)该系总共有多少学生;

(2)该系共开设来多少门课程;

(3)每个学生的总成绩多少;

(4)每门课程选修的同学人数;

(5)每位同学选修的课程门数;

(6)该系DataBase课程共有多少人选修;

(7)每位同学平均成绩;

数据预览:

每行数据包括以下三部分内容:学生姓名,所学课程,成绩

每项数据以“,”分隔开

代码实现:

def main(args: Array[String]): Unit = {
val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")
val sc = new SparkContext(sparConf) //建立Spark连接
val spark = SparkSession.builder().getOrCreate()
val df = spark.read.option("header", "true").csv("E:\\ShuJu\\sparkinput\\batch_test_score\\Data01.csv") //读入文件 df.show() println("(1)该系总共有多少学生")
val StudentNum = df.groupBy("name").count().collect().length
println(StudentNum) println("(2)该系共开设来多少门课程")
val CourseNum = df.groupBy("course").count().collect().length
println(CourseNum) println("(3)每个学生的总成绩多少")
df.select("name", "grade").groupBy("name").agg(sum("grade")).show() println("(4)每门课程选修的同学人数")
df.groupBy("course").count().show() println("(5)每位同学选修的课程门数")
df.select("name", "course").groupBy("name").count().show() println("(6)该系DataBase课程共有多少人选修")
df.select("name", "course").groupBy("course").count().filter("course = 'DataBase'").show() println("(7)每位同学平均成绩")
val grades = df.groupBy("name").agg(sum("grade").alias("总成绩"), count("course").alias("科目数量"))
val avgGrade = grades.withColumn("平均成绩", grades("总成绩") / grades("科目数量"))
avgGrade.select(avgGrade("name"), round(avgGrade("平均成绩"), 2).alias("平均成绩")).show() sc.stop()
}

SparkSQL练习:对学生选课成绩进行分析计算的更多相关文章

  1. 基于SSH框架的学生选课质量属性分析

    系统:学生选课系统 框架:SSH(Struts2+Spring+Hibernate) 我做的是基于SSH框架的学生选课系统.学生选课系统的特性:①系统响应时间短,能够快速调出课程数据供学生选课提交.② ...

  2. python开发项目:学生选课系统

    程序要求:1.创建北京.上海两所学校(分析:通过学校类实例化两个学校实例) 2.创建Linux.python.go三个课程,Linux\go在北京开,Linux在上海开(创建Linux.python. ...

  3. SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句

    附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...

  4. 学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)

    学生选课数据库SQL语句45道练习题: 一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四 ...

  5. 网上流行的学生选课相关的50个常用sql语句

    学生表 Student(S#,Sname,Sage,Ssex) 教师表 Teacher(T#,Tname) 课程表 Course(C#,Cname,T#) 学生成绩表 SC(S#,C#,score) ...

  6. sql-hive笔试题整理 1 (学生表-成绩表-课程表-教师表)

    题记:一直在写各种sql查询语句,最长的有一百多行,自信什么需求都可以接,可......,想了想,可能一直在固定的场景下写,平时也是以满足实际需求为目的,竟不知道应试的题都是怎么出的,又应该怎么做.遂 ...

  7. Django 小实例S1 简易学生选课管理系统 11 学生课程业务实现

    Django 小实例S1 简易学生选课管理系统 第11节--学生课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,学生需要拥 ...

  8. Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现

    Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...

  9. Django 小实例S1 简易学生选课管理系统 9 创建课程模型(model)

    Django 小实例S1 简易学生选课管理系统 第9节--创建课程模型(model) 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 对于课程模块, ...

  10. python实现学生选课系统 面向对象的应用:

    一.要求: 选课系统 管理员: 创建老师:姓名.性别.年龄.资产 创建课程:课程名称.上课时间.课时费.关联老师 使用pickle保存在文件 学生: 学生:用户名.密码.性别.年龄.选课列表[].上课 ...

随机推荐

  1. 秒懂全文:盘点13个各具特色的AI智能阅读助手工具

    在当今信息爆炸的时代,AI阅读工具正在革新我们的阅读方式,成为了提高效率.优化阅读体验的关键. 这类AI阅读辅助工具,只需要上传文件或者输入链接,便可以直接以聊天对话的形式进行一键总结和智能问答,满足 ...

  2. 寻访中国100家.NET中大企业 —— 第二站:苏州行

    一:事情起因 在.NET圈里混了十多年,相信有不少人知道我专注于玩 .NET高级调试,如今技术上的硬实力还是能够解决市面上的一些疑难杂症,但软实力却在另一个极端,如(人际交往,人情事故),所以就萌生了 ...

  3. 十五张图带你快速入门 shardingsphere-proxy

    Apache ShardingSphere 是一款分布式的数据库生态系统,它包含两大产品: ShardingSphere-Proxy ShardingSphere-JDBC 很多同学对于 Shardi ...

  4. TwinCAT3 - 实现自己的Tc2_SerialCom

    目录 1,前言 2,原生Tc2_SerialCom简单使用 3,实现自己的Tc2_SerialCom 3.1,EL6inData22B,EL6outData22B 3.2,ComBuffer 3.3, ...

  5. Java 读取 IP 地址

    使用 InetAddress 类 可以利用 Java 自带的 InetAddress 类来检查一个字符串是否为有效的 IP 地址: import java.net.InetAddress; // 导入 ...

  6. SQL查折线图数据

    在做后台管理系统的时候,有很大概率是要与各种图表数据打交道, 那么如何通过SQL查出基本图表的数据呢,以折线图为例, X轴为日期,Y轴为统计数据,那么我们通过SQL如何查询出连续日期下的统计数据呢, ...

  7. JavaScript – 小技巧 Tips

    1e6 等价于 1 + 后面 6 个零 console.log(1e6 === 1_000_000); 模拟 C# 的 Record Deconstruct class Size implements ...

  8. Azure 入门系列 (第三篇 Publish Web Application to VM)

    本系列 这个系列会介绍从 0 到 1 搭建一个 Web Application 的 Server. 间中还会带上一些真实开发常用的功能. 一共 6 篇 1. Virtual Machine (VM) ...

  9. Angular 18+ 高级教程 – 国际化 Internationalization i18n

    介绍 先讲讲名词. Internationalization 的缩写是 i18n,中文叫国际化. Globalization 是 Internationalization 的同义词,都是指国际化. L ...

  10. Java 8 新特性:Stream 流快速入门

    前言 在 java 中,涉及到对数组.集合等集合类元素的操作时,通常我们使用的是循环的方式进行逐个遍历处理,或者使用 stream 流的方式进行处理. 什么是 Stream? Stream(流)是一个 ...