西电数据库openGauss平台练习

打印 上一主题 下一主题

主题 1025|帖子 1025|积分 3075

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
西电数据库openGauss平台练习

仅纪录平台标注中等难度及以上的题目
试卷编号:41
试卷名称:gongsi
条件:
公司数据库有如下关系模式: 员工employee(员工号eno,员工姓名ename,员工年岁eage,所在部门号dno,工资salary,工作日期work); 部门depart(部门号dno,部门名称dname,部门经理员工号dman)。
题目3:查询每个部门的部门号、员工均匀工资。

  1. select dno, AVG(salary)
  2. from employee group by dno
复制代码
题目4:查询员工的中位数工资。

  1. select distinct salary from employee a
  2. where (select count(*) from employee b where b.salary>=a.salary) -
  3. (select count(*) from employee b where b.salary<=a.salary)
  4. between -1 and 1
复制代码
这道题比较容易踩坑的地方是题目没有说明它对中位数的界说,这里是将多个中位数返回归去,而不用求均匀,而网上大多数类似的需求都是只能返回一个中位数,所以有多个中位数是都进行了求均匀操作,但这里是没有的,所以需要特别注意
题目5:查询每个部门的部门号,员工中位数工资。

  1. select distinct dno,salary from employee a
  2. where (select count(*) from employee b where b.dno=a.dno and b.salary>=a.salary) -
  3. (select count(*) from employee b where b.dno=a.dno and b.salary<=a.salary)
  4. between -1 and 1
复制代码
题目6:员工表设计不符合1NF

工作日期包罗多个日期,中间用逗号,分隔,前后大概有多个空格,如2022-11-11,2022-11-12,2018-08-01,查询每个员工的员工号,姓名和工作日期,此中工作日期要求将原有日期拆分为单个日期。
  1. select eno,ename,trim(regexp_split_to_table(work,',')) as work from employee;
复制代码
这道题个人觉得是这套练习里最难的一道了,但openGauss的regexp_split_to_table函数已经帮我们实现了行转列这个最难的点,然后trim函数去一下空格,就出来了.当然别的方法也可以做,网上一搜都有,但函数用起来就是爽
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

守听

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表