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

mysal第三次作业

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的部门号和总人数。

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、显示所有职工的基本信息。

      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/4115.html

相关文章:

  • 分页和mmap
  • C++之异常处理
  • 牛客寒假集训营6 E 阿宁的生成树
  • 嵌入式C基础知识(10)
  • TC3xx FlexRay™ 协议控制器 (E-Ray)-01
  • 优劣解距离法TOPSIS——清风老师
  • 【Unity3D】Shader常量、变量、结构体、函数
  • LeetCode 刷题系列 -- 496. 下一个更大元素 I
  • Docker 搭建本地私有仓库
  • XML中的CDATA且mybatis中特殊字符转义
  • 位运算 | 1356. 根据数字二进制下 1 的数目排序
  • React Hooks之useState详解
  • 选购交换机的参数依据和主要的参数指标详解
  • Connext DDS属性配置参考大全(1)
  • Docker安全
  • 刷题记录:牛客NC20279[SCOI2010]序列操作
  • Fluent Python 笔记 第 6 章 使用一等函数实现设计模式
  • windbg-应用层实时调试
  • 【Python语言基础】——Python NumPy 数组索引
  • MWORKS--MoHub介绍
  • Netty零拷贝机制
  • C++:提高篇: 栈-寄存器和函数状态:windows X86-64寄存器介绍
  • MyBatis-Plus入门案例
  • 适用于 Windows 11/10/8/7 的 10 大数据恢复软件分享
  • 在线支付系列【23】支付宝支付接入指南
  • linux系统常用命令
  • 面试(十一)new与delete(整理) 及 内存泄露
  • 2D图像处理:2D ShapingMatching_缩放_旋转_ICP_显示ROI
  • (考研湖科大教书匠计算机网络)第四章网络层-第一、二节:网络层概述及其提供的服务
  • 概论_第8章_假设检验的基本步骤__假设检验的类型