当前位置: 首页 > news >正文

第三次作业

一、单表查询

素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等

CREATE TABLE `worker` (

`部门号` int(11) NOT NULL,

`职工号` int(11) NOT NULL,

`工作时间` date NOT NULL,

`工资` float(8,2) NOT NULL,

`政治面貌` varchar(10) NOT NULL DEFAULT '群众',

`姓名` varchar(20) NOT NULL,

`出生日期` date NOT NULL,

PRIMARY KEY (`职工号`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生

日期`) VALUES (101, 1001, '2015-5-4', 3500.00, '群众', '张三', '1990-7-1');

INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生

日期`) VALUES (101, 1002, '2017-2-6', 3200.00, '团员', '李四', '1997-2-8');

INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生

日期`) VALUES (102, 1003, '2011-1-4', 8500.00, '党员', '王亮', '1983-6-8');

INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生

日期`) VALUES (102, 1004, '2016-10-10', 5500.00, '群众', '赵六', '1994-9-5');

INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生

日期`) VALUES (102, 1005, '2014-4-1', 4800.00, '党员', '钱七', '1992-12-30');

INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生

日期`) VALUES (102, 1006, '2017-5-5', 4500.00, '党员', '孙八', '1996-9-2');

1、显示所有职工的基本信息。

2、查询所有职工所属部门的部门号,不显示重复的部门号。

3、求出所有职工的人数。

4、列出最高工和最低工资。

5、列出职工的平均工资和总工资。

6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。

7、显示所有女职工的年龄。

8、列出所有姓刘的职工的职工号、姓名和出生日期。

9、列出1960年以前出生的职工的姓名、参加工作日期。

10、列出工资在1000-2000之间的所有职工姓名。

11、列出所有陈姓和李姓的职工姓名。

12、列出所有部门号为2和3的职工号、姓名、党员否。

13、将职工表worker中的职工按出生的先后顺序排序。

14、显示工资最高的前3名职工的职工号和姓名。

15、求出各部门党员的人数。

16、统计各部门的工资和平均工资

17、列出总人数大于4的部门号和总人数。

操作步骤

1、显示所有职工的基本信息。

select * from worker;

2、查询所有职工所属部门的部门号,不显示重复的部门号。

select distinct `部门号` from worker;

3、求出所有职工的人数。

select count(`姓名`) from worker;

4、列出最高工和最低工资。

# 最高 降序排序 取第一个

select `工资` from worker order by `工资` desc limit 0,1;

# 最低 升序排序 取第一个

select `工资` from worker order by `工资` asc limit 0,1;

5、列出职工的平均工资和总工资。

# 平均工资

select avg(`工资`) from worker;

# 总工资

select sum(`工资`) from worker;

select avg(`工资`) 平均工资,sum(`工资`) 总工资 from worker;

6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。

create table `工作日期` (

`职工号` int(11) NOT NULL,

`姓名` varchar(20) NOT NULL,

`工作时间` date NOT NULL,

PRIMARY KEY (`职工号`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

7、列出1960年以前出生的职工的姓名、参加工作日期。

# datediff()用于计算两个日期之间的天数

-- datediff函数,返回值是相差的天数,不能定位到小时、分钟和秒

SELECT datediff(now(),`出生日期` ) as age FROM worker;

# TIMESTAMPDIFF函数,有参数设置,可以精确到天(DAY)、小时(HOUR),分钟(MINUTE)和秒(SECOND)

-- 使用起来比datediff函数更加灵活。对于比较的两个时间,时间小的放在前面,时间大的放在后面。

SELECT TIMESTAMPDIFF(year,`出生日期`,NOW()) as age FROM worker;

8、列出工资在1000-2000之间的所有职工姓名。

select `姓名` from worker where `工资` between 3000 and 5000;

select `姓名`,`工资` from worker where `工资` between 3000 and 5000;

9、列出所有陈姓和李姓的职工姓名。

select `姓名` from worker where (`姓名` like'陈%') or (`姓名` like'李%');

10、列出所有部门号为2和3的职工号、姓名、党员否。

select * from worker where find_in_set('党员',政治面貌);

select * from worker where locate('党员',政治面貌);

# locate() 查找某个字段里面是否有某个某个字符串 是(1)否(0)

select `职工号`,`姓名`,(locate('党员',政治面貌)) as `是(1)否(0)党员` from worker where `部门号`=102 or `部门号`=103;

11、将职工表worker中的职工按出生的先后顺序排序。

select * FROM worker ORDER BY `出生日期`;

12、显示工资最高的前3名职工的职工号和姓名。

select `职工号`,`姓名` from worker ORDER BY `工资` desc limit 0,3;

13、求出各部门党员的人数。

SELECT `部门号` from worker WHERE `政治面貌`='党员';

select `部门号`,count(`部门号`) from worker GROUP BY `部门号`;

# locate() 查找某个字段里面是否有某个某个字符串 是(1)否(0

select `部门号`,sum(locate('党员',政治面貌)) 党员数 from worker GROUP BY `部门号`;

14、统计各部门的工资和平均工资

select `部门号`,sum(工资) 总工资,avg(工资) 平均工资 from worker GROUP BY `部门号`;

15、列出总人数大于4的部门号和总人数。

select `部门号`,count(姓名) 总人数 from worker GROUP BY `部门号` HAVING count(姓名) >2 ;

select `部门号`,count(姓名) 总人数 from worker GROUP BY `部门号` HAVING count(姓名) >4 ;

http://www.lryc.cn/news/4311.html

相关文章:

  • 基础算法(直接插入,希尔排序,快排,归并,折半查找)
  • 电子学会2022年12月青少年软件编程(图形化)等级考试试卷(一级)答案解析
  • 基于JAVA的超级玛丽设计与实现
  • 硬件工程师入门基础知识(一)基础元器件认识(二)
  • Python-项目实战--贪吃蛇小游戏-游戏框架搭建(2)
  • JVM基础
  • Android 内存优化(基础轮)必看~
  • STM32单片机GSM短信自动存取快递柜
  • 力扣(LeetCode)410. 分割数组的最大值(2023.02.12)
  • 管理还原数据
  • c的关键字有那些
  • 链表OJ(一)
  • MySQL第三次作业
  • Python中的类和对象(7)
  • 【JVM】7种经典的垃圾收集器
  • 2023/2/12总结
  • Linux之正则表达式
  • 前端高频面试题-HTML和CSS篇(一)
  • Redis 专题总结
  • 【Python百日进阶-Web开发-Vue3】Day515 - Vue+ts后台项目2:登录页面
  • 【博客620】prometheus如何优化远程读写的性能
  • redis可视工具AnotherRedisDesktopManager的使用
  • 【idea】idea生产类注释和方法注释
  • jenkins +docker+python接口自动化之jenkins容器安装python3(二)
  • go 命令行工具整理
  • RuntimeError: CUDA out of memory
  • Kubernetes1.25中Redis集群部署实例
  • C++11实现计算机网络中的TCP/IP连接(Windows端)
  • Spring框架自定义实现IOC基础功能/IDEA如何手动实现IOC功能
  • pip离线安装windows版torch