P38 第07章 单行函数课后练习

本篇博客通过一系列SQL查询练习题,展示了如何使用如NOW(), SYSDATE()等获取系统时间的函数,以及如何进行工资提升、按姓名首字母排序、计算工作年数等操作。同时,还涉及了CASE-WHEN语句在根据特定条件分类数据时的应用,例如根据员工职位映射等级。所有练习都旨在强化SQL中的单行函数理解和实际应用。
摘要由CSDN通过智能技术生成

第07章 单行函数课后练习

# 第07章_单行函数练习题

# 1.显示系统时间(注:日期+时间)

SELECT NOW(),SYSDATE(),CURRENT_TIMESTAMP(),LOCALTIME(),LOCALTIMESTAMP()
FROM DUAL; #掌握一个即可

# 2.查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)

SELECT employee_id,last_name,salary,salary * 1.2"new salary"
FROM employees;

# 3.将员工的姓名按首字母排序,并写出姓名的长度(length)

SELECT last_name,LENGTH(last_name)
FROM employees
ORDER BY last_name ASC;

# 4.查询员工id,last_name,salary,并作为一个列输出,别名为OUT_PUT

SELECT CONCAT(employee_id,',',last_name,',',salary)"out_put"
FROM employees;

# 5.查询公司各员工工作的年数、工作的天数,并按工作年数的降序排序

SELECT employee_id,hire_date,DATEDIFF(CURDATE(),hire_date)/365"worked_years",
DATEDIFF(CURDATE(),hire_date)"worked_days",
TO_DAYS(CURDATE())-TO_DAYS(hire_date)"worked_days1"
FROM employees
ORDER BY worked_years DESC;

# 6.查询员工姓名,hire_date , department_id,满足以下条件:雇用时间在1997年之后,department_id
#为80 或 90 或110, commission_pct不为空

SELECT last_name,hire_date,department_id
FROM employees
WHERE department_id IN(80,90,110)
AND commission_pct IS NOT NULL 
#and hire_date>='1997-01-01'; #存在着隐式转换
AND DATE_FORMAT(hire_date,'%Y-%m-%d')>='1997-01-01'; #格式化:日期-->字符串

# 7.查询公司中入职超过10000天的员工姓名、入职时间

SELECT last_name,hire_date
FROM employees
WHERE DATEDIFF(CURDATE(),hire_date)>=10000;

# 8.做一个查询,产生下面的结果
#<last_name> earns <salary> monthly but wants <salary*3>

SELECT CONCAT(last_name,' earns ',TRUNCATE(salary,0),' monthly but wants ',TRUNCATE(salary*3,0))"dream_salary"
FROM employees;

# 9.使用case-when,按照下面的条件:
/*
job            grade
AD_PRES          A
ST_MAN           B
IT_PROG          C
SA_REP           D
ST_CLERK         E
产生下面的结果:
*/
SELECT last_name,job_id,CASE job_id WHEN 'AD_PRES' THEN 'A'
                                    WHEN 'ST_MAN ' THEN 'B'
                                    WHEN 'IT_PROG' THEN 'C'
                                    WHEN 'SA_REP ' THEN 'D'
                                    WHEN 'ST_CLERK' THEN 'E'
                                    ELSE "undefined"END "grade"
FROM employees;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值