暂无图片
假设有考勤表,请教如何通过sql查询只有签到没有签退的记录?
我来答
分享
暂无图片 匿名用户
假设有考勤表,请教如何通过sql查询只有签到没有签退的记录?
暂无图片 5M

假设有一个考勤记录,正常应该是有签到也有签退,并且发生在同一天。

表字段包括:

  1. type,值为“签到”和“签退”
  2. time,发生时间,比如2022-06-04 10:00:00
  3. username,账号等

现在想通过sql查询出某一天只有一项记录的(包括只有签到没有签退以及只有签退没有签到)的所有用户名,该如何操作?

感谢

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
Root__Liu

select username from a where a.type=0 and a.type<>1 and to_date(a.time ,‘yyyy-mm-dd’) =‘2022-06-04’;
union all
select username from a where a.type=1 and a.type<>0
and to_date(a.time ,‘yyyy-mm-dd’) =‘2022-06-04’
;

type值为0代表签到,为1代表签退。

暂无图片 评论
暂无图片 有用 0
打赏 0
赵勇

select username
from 考勤表
where time >=&begin_time
and time < &end_time
group by username
having count(distinct type)<2;

暂无图片 评论
暂无图片 有用 0
打赏 0
彭冲

补充描述一下问题:我觉得实际场景更多的是时间跨多天而不是只查某一天,通常是考勤员每周一去拉上周的数据,或者是其他的时间范围。

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena
select trunc(time) dt,username from 考勤表 where time >=&begin_time and time < &end_time group by username,trunc(time) having count(distinct type)<2;
复制
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle 中一个表,要update10个字段,之前是用10个sql,每次更新一个字段。如果改成一个sql一次更新10个字段,是不是好点?
回答 6
特地前来观摩学习下。😃
怎么给SQL中的变量进行拼接?
回答 1
在SQL中,可以使用CONCAT()函数来拼接字符串。这个函数可以将多个字符串合并成一个字符串。以下是一些例子:1.拼接两个字符串:sqlSELECTCONCAT('Hello','','World!
使用选择授权的 Oracle SQL
回答 4
谢谢你们,它真的有效。
同一SQL语句,某日执行耗时43000秒。终止后,再次执行120秒完成。
回答 5
已采纳
可能是由于之前有其他锁的因素导致,比如其他事务未提交,或者数据库在进行备份等因素导致未能按照真实情况执行。
同一条sql有时候执行时间长(7s),有时候短(0.2s)。可能是什么原因?
回答 1
有个共享池机制
为什么查询语句在SQL server中执行,在oracle中不能执行?
回答 1
函数不一样
postgresql,查询某列中最大值那条记录,sql怎么写最简单高效。
回答 1
已采纳
来自于高性能mysql一书的一个方法。我想同样适用于postgre对这列建一个倒顺索引&nbsp;然后selectfieldfromtlimit1就可以。性能最好
有哪些好用的SQL工具?
回答 1
已采纳
您好:您说的应该是指数据库客户端工具。对于MySQL开发者来说使用频率较高的是Navicat、DBeaver或者是DbVisualizer,MySQL的工具还有很多,如MySQLWorkbench、M
top10写了但是查出来的数据还是308,看了半天也没找出来问题所在
回答 1
...你最终都只会有1行。top10&nbsp;在这里毫无意义啊。
sql有索引,刚进行完统计信息收集,但AWR报告显示的是 full scan of table subpartition
回答 2
已采纳
不是有索引就一定会走索引的,CBO会预先判断,它可能觉得这个时候走子分区扫描可能更好,就不会走索引了,如果你一定要走索引,可以加hint。查出来看实际效果,人工比较一下哪个更好
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~