package com.bigdata.spark.test01
object Sparksql9 {
val emp = spark.read.json("file:///D:\\test\\sql\\emp.json")
val dept = spark.read.json("file:///D:\\test\\sql\\ept.json")
val sal = spark.read.json("file:///D:\\test\\sql\\sal.json")
emp.createOrReplaceTempView("empals")
dept.createOrReplaceTempView("deptals")
sal.createOrReplaceTempView("salals")
//1.查询出部门编号为30的所有员工的编号和姓名
spark.sql("select deptno,empno,ename from empals where deptno=30").show()
//2.找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
spark.sql("select * from empals where deptno=10 and job= 'MANAGER' or deptno = 20 and job= 'SALESMAN'").show()
//3.查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
spark.sql("select * from from empals order by total desc,hiredate asc")
//4.列出薪金大于1500的各种工作及从事此工作的员工人数。
spark.sql("select job,count(1) from empals where sal>500 group by job").show()
//5.列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。
//spark.sql("select ename from empals where deptno = '(select deptno from tabledept where dname='SALES')' ").show()
//6.查询姓名以S开头的以S结尾包含S字符或者第二个字母为L
spark.sql("select * from empalias where ename like '%S%' or ename like'_L%'").show()
//7.查询每种工作的最高工资、最低工资、人数
spark.sql("select max(coalesec(comm,0)+sal),min(coalesce(comm,0)+sal),count(1),job from empals group by job ").show()
////8.列出薪金 高于 公司平均薪金的所有员工号,员工姓名,所在部门名称,上级领导,工资,工资等级
//sparl.sql(
// """
// |select
// |a.ename,
// |a.empno,
// |b.ename as leader_name,
// |a.earn,
// |c.grade as earn_level,
// |from
// |(
// |select
// |ename,
// |empno,
// |deptno,
// |mgr,
// |coalesec(((sal + comm),sal)) as earn
// | from empals
// | where sal> (
// | elect avg(sal)
// | from empalias)
// | )as a
// | left join deptals
// | on a.deptno=deptals.deptno
// | left join (
// | select
// | empno,
// | ename
// | from empals
// | ) b
// | on a.mgr = b.empno
// | left join
// | salals as c on
// | earn >= losal and earn <= hisal
// |)
// |
// |""".stripMargin).show()
//9.列出薪金 高于 在各自部门工作的员工的平均薪金的员工姓名和薪金、部门名称
// spark.sql(
// """
// |select
// |*
// |from
// |(select
// |avg(sal) as avg_alias,
// |deptno as deptno_alias
// |from
// |(select
// |sal,
// |deptno
// |from empals
// |group by sal,deptno) as a
// |group by deptno)
// |as b
// |left join empals
// |on b.deptno_alias=empals.deptno
// | and b.avg_alias<empals.sal
// | as c
// | where c.deptno_alias in
// | (select
// | deptno
// | from
// | deptals)
// |""".stripMargin).show()
}
sqark-sql的应用(九道题)
最新推荐文章于 2024-05-01 19:13:34 发布
该代码示例展示了如何使用SparkSQL对JSON文件进行读取、创建临时视图,并执行多种复杂查询,包括按条件筛选、排序、分组统计以及联查等数据处理操作。
994

被折叠的 条评论
为什么被折叠?



