牛客刷题:SQL1 查找最晚入职员工的所有信息(7.29)

目录

一、题目描述

二、思路


一、题目描述

有一个员工employees表简况如下:

img

请你查找employees里最晚入职员工的所有信息,以上例子输出如下:

img

二、思路

目前的任务是查找最晚入职的员工的信息,最简单的思路,是找入职时间最晚的信息。

思路1:倒序

最简单的思路是,直接把数据按入职的时间倒序排列,返回第一条信息。

这个要求并不高,主要利用order bylimit参数

select
    *
from
    employees
order by
    hire_date DESC #按hire_date降序排列 
limit
    0,1    #从第0个元素开始,取1个————取第1个的意思

知识点——order by

  • 默认是升序(ASC)

  • 如果是降序,需要在列名后面加上DESC

  • 如果按多个元素依次排序,则为

select
    *
from
    employees
order by
    hire_date DESC,
    emp_no ASC
  • 上方表示的内容指,按照hire_date降序排列,再按emp_no升序排列

知识点——limit

  • 前提:sql的第一条数据为第0行

  • limit 1: 从第1条开始,取1条数据,等同于limit 0,1

  • limit 2,3:从第3条开始,取3条数据

  • limit 1,3 等价于 limit 3 offset 1

不足

这个思路虽然简单直接,但无法应对这样的情况——最大值不唯一

例如,当有两个人的入职时间都是最晚的同一天时,上方代码只能返回第一条数据,而无法察觉到第二条等值的数据

因此,我们推出思路2,通过max定位到最大值,用值来匹配!

思路2:找到最大值

鉴于思路1的不足,我们发现——不能依靠位次来定位最大值,而应该通过

最好要能直接找到最大值是谁,接着只要匹配等于这个最大值的行就行

基于上方的推断,我们只需要写两层匹配算法,利用max()找到最大的hire_date

select
    *
from
    employees
where
    hire_date = (select max(hire_date) from employees)

知识点——常用聚合函数

  1. 最大最小值——max()/min()

  • 除了数值型,也可以比较字符串和时间数据

  • 字符串:从A~Z,越来越大;依次比较

  • 时间数据:越晚越大

select 
    max(A)  # min()
from
    employees
where
    xxxxxx
  1. 求和——sum()

  • 只适用于数值型,可以计算的数字

select
    sum(A)
from
    employees
  1. 计数——count()

  • count(*) 统计表的行总数,即使行中有空,也会计算进去算作一行!

  • count(a)统计该列的行数,如果有空,则不会计算为行数!

select
    count(A)
    count(*)
from    
    employees
  • count可以统计多列的行数,中间用逗号隔开

select
    count(a) as a_name,
    count(b) as b_name
from
    employees
  1. 均值——avg()

  • 总值/非空行数

select
    avg(a) as a_avg
from
    employees

聚合函数的重复值处理!!!

select
    count(distinct a),  # 统计去重后的a列行数
    avg(all b), # 统计b列全部数值的均值;默认为all
    sum(all c)
from
    employees

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值