首页 > 数据库 >每日两道练习题-- 带你学会SQL server(获取所有非manager员工当前的薪水情况,对所有员工的薪水按照salary进行按照1-N的排名)

每日两道练习题-- 带你学会SQL server(获取所有非manager员工当前的薪水情况,对所有员工的薪水按照salary进行按照1-N的排名)

时间:2024-06-04 14:33:02浏览次数:30  
标签:练习题 salary no 薪水 员工 emp SQL date NULL

SQL Server在实际场景中的应用非常广泛,以下是一些主要的应用领域:

企业级应用:SQL Server具有高度的稳定性、可靠性和安全性,非常适合用于企业级应用。例如,企业资源规划(ERP)系统、客户关系管理(CRM)系统、人力资源管理(HRM)系统等,这些系统都需要处理大量的数据和复杂的业务逻辑,SQL Server能够满足这些需求。
金融系统:SQL Server支持事务和ACID特性,能够确保数据的一致性和完整性,这使得它在金融系统中有着广泛的应用。例如,银行、证券、保险等金融机构都会使用SQL Server来管理金融交易数据,如交易记录、账户余额、证券价格等。
电商平台:电商平台需要处理大量的订单、库存、支付等业务,SQL Server具有丰富的数据类型和功能,能够轻松应对这些需求。它可以帮助电商平台实现快速、准确的数据处理和分析,提高业务效率和用户满意度。
医疗行业:在医疗行业中,SQL Server也被广泛应用。例如,医疗机构可以使用SQL Server来计算和管理医疗费用,包括费用结算、报销等;同时,SQL Server还可以用于存储和管理患者的基本信息、医疗历史、就诊记录等,方便医生进行诊断和治疗。
物联网应用:在物联网应用中,数据的稳定和可靠性至关重要。SQL Server采用了众多的优化技术,如索引、分区等,可以针对大量的数据进行高效的查询、存储、处理和分析。同时,SQL Server还提供了高可用架构,可以保证物联网应用的高可用性。
数据分析和挖掘:SQL Server提供了强大的数据分析和挖掘功能,可以帮助企业从海量数据中提取有价值的信息。通过数据挖掘技术,企业可以发现隐藏在数据中的规律和趋势,为决策提供有力支持。

每日两道练习题-- 带你学会SQL server在实际场景中的应用

1、对所有员工的薪水按照salary进行按照1-N的排名

题目描述

对所有员工的当前(to_date=‘9999-01-01’)薪水按照salary进行按照1-N的排名,相同salary并列且按照emp_no升序排列

CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));

答案

select t1.emp_no,t1.salary,count(distinct t2.salary) rank from (select * from salaries s where to_date = '9999-01-01') t1 , (select * from salaries s where to_date = '9999-01-01') t2 where t2.salary >= t1.salary group by t1.emp_no order by rank

题解

本题无法过MySQL的查询,但是测试通过了sqlite,也就是牛客网提交通过。

1、获得两个临时表t1,t2

(select * from salaries s where to_date = '9999-01-01') t1
(select * from salaries s where to_date = '9999-01-01') t2

2、用第一个临时表的t1.salary去和t2.salary进行比较,从何可以获得所有t1.salary小于t2.salary的数据集,正是如此,我们可以对用户进行分组,统计每个用户对应的salary小于其他用户的数据条数,此为排名。为什么count时要去重,因为可能存在相同排名的人

select t1.emp_no,count(distinct t2.salary) from t1,t2 where t2.salary >= t1.salary group by t1.emp_no

2、获取所有非manager员工当前的薪水情况

题目描述

获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date=‘9999-01-01’

CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));

答案

select dept_no,s.emp_no,salary from (select * from employees where emp_no not in (select emp_no from dept_manager)) emp, salaries s,dept_emp de where emp.emp_no = s.emp_no and s.to_date = '9999-01-01' and emp.emp_no = de.emp_no

题解

1、获取所有的manager的no

select emp_no from dept_manager

2、获取所有非manager的信息表 emp

select * from employees where emp_no not in (select emp_no from dept_manager)

3、拼接emp,salaries,dept_emp表 获取答案结果集

标签:练习题,salary,no,薪水,员工,emp,SQL,date,NULL
From: https://blog.csdn.net/2401_84585615/article/details/139441658

相关文章

  • 人力资源案例:新员工培训体系的搭建
    为满足企业发展需要,大多企业每年都会招聘大量的新员工,但是,如何将这些新员工快速培养起来成了该企业的难题。为了有效解决这个问题,该公司尝试过很多办法,比如实行轮岗、师带徒等方式,但是效果并不理想,往往是投入了很多资金和精力之后,员工仍不能达到岗位的要求。此外,每年招聘的新员......
  • (十三)统计学基础练习题七(选择题T301-350)
    本文整理了统计学基础知识相关的练习题,共50道,适用于想巩固统计学基础或备考的同学。来源:如荷学数据科学题库(技术专项-统计学二)。序号之前的题请看往期文章。301)302)303)304)305)306)307)308)309)310)311)312)313)314)315)316)317)318)319)320)321)322)......
  • C语言练习题之——从简单到烧脑(13)(每日两道)
    打印爱心1.1:普通输出爱心#include<stdio.h>intmain(){ printf("******************\n");//7(代表边上的空格) printf("******************************\n");//4 printf("************************************\n&quo......
  • 2.开发流程-员工操作
    开发流程-员工操作:公用操作:需要使用默认值时,设置一个公共类,在里面设置对应的常量,方便日后维护;TODO注释://TODO表示该功能还未做好,先标记下来;BeanUtils:Spring中的对象工具类:BeanUtils.copyProperties(参数一,参数二):对象属性拷贝,将参数一中与参数二相同的属性名,拷贝到......
  • C语言练习题之——从简单到烧脑(12)(每日两道)
    题目1:找出1到99之间的全部同构数, 同构数:它出现在平方数的右边,例如:5是25右边的数,25是625右边的数,5和25都是同构数。#include<stdio.h>intmain(){ intsum=0,left=0,right=0; printf("1-99之间的同构数:\n"); for(inti=1;i<100;i++) { inta=i*i;......
  • C语言练习题之——从简单到烧脑(10)(每日两道)
    题目1:二位数组的应用:输入一个3X5的整数矩阵,输出其中的最大值,最小值,和他们的下标#include<stdio.h>intmain(){ inta[3][5],max,min,maxi,maxj,mini,minj; //最大值最小值,和下标分别定义变量存储 inti,j; for(i=0;i<3;i++) for(j=0;j<5;j++)......
  • 字典课后练习题 多加练习呀!
    info_dict={"王":{"部门":"科技部","工资":3000,"级别":1},"周":{"部门":"市场部","工资":5000,......
  • 系统编程练习题----利用条件量和互斥锁,实现两个线程之间的同步与互斥
    目录题目解析代码结果展示题目解析​ 该题主要依靠条件量和互斥锁来实现线程之间的同步与互斥,分析主线程、线程A和线程B的任务如下:主线程:打开LCD屏和触摸屏的硬件文件,并分别存储两个文件的文件描述符,方便后面进行条件判断。开启线程A和线程B。定义并初始化条件量和互斥......
  • java期末练习题,设计一个学生类,包括公开的学号、私有的成绩及其题目所要求的条件进行打
    (1)Student类中包含公开的学号、私有的成绩两个属性;(2)分别给这两个属性分别定义设置值与获取值的方法;1)在学号设置方法中,如果学号长度大于12位,提示用户并截取前12位。2)在分数设置方法中,如果分数不在0-100范围内,提示用户并默认60分。(3)Student类中定义一个无参的......
  • java期末练习题,设计教师类,完成教授,副教授,讲师三个类的定义,在完成相应的测试。
        教授的基本工资为5000元,每学时补贴70元;     副教授的基本工资为3500元,每学时补贴60元;     讲师的基本工资2600元,每学时补贴55元。     已知每个教师的学时数,计算每个教师的每月工资数。输入1对应教授。输入2对应副教......