找文章 / 找答案
精选问答 更多内容

[数据处理] 根据日期过滤数据集数据

晨光熹微青铜一 显示全部楼层 发表于 2023-6-6 16:53:47 |阅读模式 打印 上一主题 下一主题
1
未解决
您好,我有这么一个sql数据集,是我们公司的刷脸打卡数据表,里面记录了所有员工每次刷脸的数据,每位员工每天会多次刷脸,我怎么能过滤出每个员工每天第一次打卡的数据呢,这样我做打卡视图的时候查看详细数据就是每个人每天只有一条打卡记录,而非每个人每天都有很多次打卡记录。这个可以实现吗?
回复

使用道具 举报

精彩评论20

yhdata_ruby铂金一 显示全部楼层 发表于 2023-6-6 16:56:36
方法1、使用自服务数据集的分组与汇总功能
方法2、新建计算列:fixed(员工::max(打卡))
回复

使用道具 举报

晨光熹微青铜一 显示全部楼层 发表于 2023-6-6 16:59:16
yhdata_ruby 发表于 2023-6-6 16:56
方法1、使用自服务数据集的分组与汇总功能
方法2、新建计算列:fixed(员工::max(打卡)) ...

新建计算列数据集里不还是多条数据吗
回复

使用道具 举报

美滋滋白银二 显示全部楼层 发表于 2023-6-6 17:01:40
我觉得你要考虑通宵加班的业务数据。
比如我1号加班到第二天凌晨3点然后刷卡回家。所以1号只有一条上班打卡记录,2号有一条1号的下班打卡记录。如果2号3点凌晨打卡回家休息后,中午又来公司上班打卡,那么还会有上班及下班记录。这种业务你得考虑清楚如何处理。不是简单的抽取当天第一次打卡记录就是上班记录。
回复

使用道具 举报

晨光熹微青铜一 显示全部楼层 发表于 2023-6-6 17:03:17
美滋滋 发表于 2023-6-6 17:01
我觉得你要考虑通宵加班的业务数据。
比如我1号加班到第二天凌晨3点然后刷卡回家。所以1号只有一条上班打卡 ...

我们没有这种情况,加班到第二天
回复

使用道具 举报

晨光熹微青铜一 显示全部楼层 发表于 2023-6-6 17:04:42
美滋滋 发表于 2023-6-6 17:01
我觉得你要考虑通宵加班的业务数据。
比如我1号加班到第二天凌晨3点然后刷卡回家。所以1号只有一条上班打卡 ...

我只要记录他每天打卡一次的记录知道今天有多少人来现场就可以了,
回复

使用道具 举报

yhdata_ruby铂金一 显示全部楼层 发表于 2023-6-6 17:05:11
晨光熹微 发表于 2023-6-6 16:59
新建计算列数据集里不还是多条数据吗

可以使用SQL查询语句来过滤出每个员工每天的第一次打卡记录。具体的实现方式可能会因所使用的数据库系统而有所差异,以下是一种常见的方法,您可以根据自己的需求进行调整。

假设数据表名为 `face_punch_records`,包含以下列:
- `employee_id`:员工ID
- `punch_time`:打卡时间

可以使用以下SQL查询语句来获取每个员工每天的第一次打卡记录:

```sql
SELECT employee_id, MIN(punch_time) AS first_punch_time
FROM face_punch_records
GROUP BY employee_id, DATE(punch_time)
```

这个查询语句使用了 `GROUP BY` 子句来按照 `employee_id` 和 `DATE(punch_time)` 进行分组,然后使用聚合函数 `MIN()` 来获取每个组内的最小打卡时间,即每个员工每天的第一次打卡时间。

请注意,上述查询语句中使用了 `DATE()` 函数来从 `punch_time` 中提取日期部分,以便将打卡记录按照日期进行分组。根据所使用的数据库系统,该函数可能会有所不同,请根据您的实际情况进行调整。

通过执行以上查询语句,您将获得每个员工每天的第一次打卡记录,然后可以根据需要将结果用于打卡视图的显示和分析。
回复

使用道具 举报

美滋滋白银二 显示全部楼层 发表于 2023-6-6 17:10:11
晨光熹微 发表于 2023-6-6 17:04
我只要记录他每天打卡一次的记录知道今天有多少人来现场就可以了,

那你在报表中按照每天的日期分组,按照人员统计distinctcount数就可以了吧。就可以知道每一天有多少个人来了
回复

使用道具 举报

晨光熹微青铜一 显示全部楼层 发表于 2023-6-6 17:13:33
美滋滋 发表于 2023-6-6 17:10
那你在报表中按照每天的日期分组,按照人员统计distinctcount数就可以了吧。就可以知道每一天有多少个人 ...

这样可以实现图表的功能,但是查看详细数据会展示每个人的多条打卡数据。
回复

使用道具 举报

美滋滋白银二 显示全部楼层 发表于 2023-6-6 17:17:12
你要是只关注每个人每天第一条数据,你可以用SQL每天只抽取每个人的第一条数据。
例如:
select * from (
select 打卡日期字段,
员工ID字段,
打卡时间字段,
row_number() over (partition by 每天日期字段,员工ID字段 order by 打卡时间) as cno
from 员工打卡记录表
) where cno = 1
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部