sqark-sql的应用(九道题)

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()
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值