第7章_单行函数

芳华梦落 2022-9-17 90 9/17

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

SELECT NOW()
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 DESC;

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

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

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

SELECT DATEDIFF(SYSDATE(),hire_date) / 365 worked_years,DATEDIFF(SYSDATE(),
hire_date) worked_days
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 hire_date >= '1997-01-01' #隐式转换
#where hire_date >= str_to_date('1977-01-01','%Y-%m-%d') #显示转换
WHERE DATE_FORMAT(hire_date,'Y') >='1977' #时间格式化
AND department_id IN (80,90,110)
AND commission_pct IS NOT NULL;

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

SELECT last_name,hire_date
FROM employees
#where to_days(now())-to_days(hire_date) >10000
WHERE DATEDIFF(NOW(),hire_date) >10000;

# 8.做一个查询,产生下面的结果

-- <last_name> earns `<salary>` monthly but wants <salary*3>
-- Dream Salary
-- King earns 24000 monthly but wants 72000
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
-- 产生下面的结果
-- Last_name           Job_id Grade
-- king                        AD_PRES A
SELECT last_name Last_name,job_id 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 'F' END "gread"
FROM employees;

 

- THE END -

芳华梦落

10月08日15:51

最后修改:2022年10月8日
1

非特殊说明,本博所有文章均为博主原创。