SQL-统计公司迟到名单
公司每天要进行打卡上班,每个人每天也可以多次打卡,所有打卡信息会记录到表A 中,表A中有name, date, time 等字段。
a. 要统计今天迟到的人的名单,请写出相应的SQL。
b. 每月会统计迟到次数排行前十的人的名单,请写出相应的SQL。
分析得之主要分以下三个子问题
1.迟到前十名
select `name`,count(`name`) as `sum`
from A
where (time>'09:00:00' or time is null)
group by `name`
order by `sum` desc
limit 0,10;
2.本月内
select *
from A
where date(now()) >= `date` and adddate(date(now()), -30) <= `date`;
3.获得每天最早打卡时间
1)在这里我是用的是临时表进行获取的,因为对于表中顺序不同,group by取得的第一条可能不是最早打卡时间,
我发现子查询不能解决这个问题,所以我在这里创建了临时表来保存time的asc顺序,然后再进行group by。
create temporary table t1(
select *
from A
order by `name`,`date`,`time`
);select *
from t1
group by `date`,`name`;drop table t1;
2)这里也可以通过建立索引的方式实现,对于order by和group by这种谓词需要排序的可以为其谓词建立索引,这里就是对
`name`,`date`,`time`建立索引。查询时候就不用再排序啦。
结合得出答案如下:
create temporary table t1(
select *
from A
order by `name`,`date`,`time`
);select `name`,count(`name`) as `sum`
from (
select *
from t1
group by `date`,`name`) as b
where (time>'09:00:00' or time is null) and
(date(now()) >= `date` and adddate(date(now()), -30) <= `date`)
group by `name`
order by `sum` desc
limit 0,10;drop table t1;
SQL-统计公司迟到名单相关推荐
- 用sql统计vintage,滚动率,迁移率,逾期率
获取代码请移步:用sql统计vintage,滚动率,迁移率,逾期率
- mysql count if语句_COUNT分组条件去重的sql统计语句示例(mysql)
常规情况下的sql分组统计为: select count(1) from 表 where 条件 group by 字段; 但是有时往往需要添加不同的条件已经去重的统计以上语句就不能满足需求. 解决方案 ...
- 【每日一练:SQL】写一条SQL统计连续三个月金额大于0及每个月的金额
写一条SQL统计连续在三个月金额大于0及展现每个月的金额 需求: 下面是表FEE,字段是month(月份),service_id(电话号码),fee(出帐金额),请参看下面要求: Month ...
- 微信食堂就餐人数统计小程序开发,微信饭堂报餐人数,怎样统计公司每日就餐人数,就餐人数不固定如何统计,制作报餐微信小程序
单位食堂想控制成本 ,想弄个小程序 ,只要实现扫二维码预约第二天吃饭和扫二维码领餐 ,方便后厨统计预约人数做饭 并统计就餐人头看看谁不来, 没预约就不让吃饭.如何实现每天用餐报数,统计就餐人数的小程序 ...
- sql 统计常用的sql
统计常用的sql语句: 今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0 昨天的所有数据:select * fr ...
- 【sql 统计实例】统计本月,本年,去年
sql 统计 优化 分三条sql查出三种不同的状态的记录数(总记录,未支付,已支付) group by对记录数进行分日期进行统计 CASE WHEM 整合成一条sql case when ...
- mysql+下周,sql统计本周,本月,下周,下月sql语句
//本款sql 语句可以查询,本周,本月,下周,下月生日的相关数据 sql 统计本周,本月,下周,下月sql语句 /* 表结构 Student(S#,Sname,Sage,Ssex) --S# 学生编 ...
- mysql 以周为单位记录数据_mysql 按年度、季度、月度、周、日SQL统计查询
创建Table CREATE TABLE `test` ( `cdate` datetime DEFAULT NULL, `id` int(11) DEFAULT NULL, `name` varch ...
- sql统计count
mysql中count统计不同数据出现次数 简单数据表 如图: 统计有多少个不同手机进行缴费 sql统计是使用count() 进行统计 在不考虑重复的情况下,统计手机数 select count( p ...
最新文章
- python连接elasticsearch查询数据
- HTML语言基础.下
- python利器怎么编程-C++和Python混合编程的利器
- 多线程Socket的InputStream的困扰一天才解决的问题
- POJ 2301 Beat the Spread!
- Python环境(基于Pycharm和官方python包)搭建顺序
- java.lang.StackOverflowError递归的栈溢出错误
- DI(destination imagination)活动
- python查询mysql数据库_用python操作mysql数据库(之简单查询操作)
- 演示Go语言多返回值功能
- httpservletresponse 重定向浏览器不变的原因_正确区分火狐浏览器(Firefox)中国版和国际版amp;下载方法...
- setwindowpos怎么改变z序_【情感问答】||朋友圈子小,沉默寡言嘴不甜,情商低,该怎么脱单?...
- 计算机专业女生节祝福语,大学女生节简短祝福语
- 关于Windows 10驱动无法使用,无法验证设备所需的驱动程序的数字签名问题
- 三盘惠普双循环的磁盘阵列恢复
- 明星艺人宣传推广的有效方案有哪些呢?
- matlab输出以下图形,输出高品质MATLAB图形的方法与技巧_陈丽安.pdf
- 春考计算机专业PS考点,春考辅导:春考PS的学习方法和技巧
- 笔记本损耗60 计算机提示,笔记本电脑寿命短,你可能犯了这3个错误
- 利用BCB自己打造QQ炸弹