永洪社区

标题: 根据日期过滤数据集数据 [打印本页]

作者: 晨光熹微    时间: 2023-6-6 16:53
标题: 根据日期过滤数据集数据
您好,我有这么一个sql数据集,是我们公司的刷脸打卡数据表,里面记录了所有员工每次刷脸的数据,每位员工每天会多次刷脸,我怎么能过滤出每个员工每天第一次打卡的数据呢,这样我做打卡视图的时候查看详细数据就是每个人每天只有一条打卡记录,而非每个人每天都有很多次打卡记录。这个可以实现吗?

作者: yhdata_ruby    时间: 2023-6-6 16:56
方法1、使用自服务数据集的分组与汇总功能
方法2、新建计算列:fixed(员工::max(打卡))
作者: 晨光熹微    时间: 2023-6-6 16:59
yhdata_ruby 发表于 2023-6-6 16:56
方法1、使用自服务数据集的分组与汇总功能
方法2、新建计算列:fixed(员工::max(打卡)) ...

新建计算列数据集里不还是多条数据吗
作者: 美滋滋    时间: 2023-6-6 17:01
我觉得你要考虑通宵加班的业务数据。
比如我1号加班到第二天凌晨3点然后刷卡回家。所以1号只有一条上班打卡记录,2号有一条1号的下班打卡记录。如果2号3点凌晨打卡回家休息后,中午又来公司上班打卡,那么还会有上班及下班记录。这种业务你得考虑清楚如何处理。不是简单的抽取当天第一次打卡记录就是上班记录。
作者: 晨光熹微    时间: 2023-6-6 17:03
美滋滋 发表于 2023-6-6 17:01
我觉得你要考虑通宵加班的业务数据。
比如我1号加班到第二天凌晨3点然后刷卡回家。所以1号只有一条上班打卡 ...

我们没有这种情况,加班到第二天
作者: 晨光熹微    时间: 2023-6-6 17:04
美滋滋 发表于 2023-6-6 17:01
我觉得你要考虑通宵加班的业务数据。
比如我1号加班到第二天凌晨3点然后刷卡回家。所以1号只有一条上班打卡 ...

我只要记录他每天打卡一次的记录知道今天有多少人来现场就可以了,
作者: yhdata_ruby    时间: 2023-6-6 17:05
晨光熹微 发表于 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
晨光熹微 发表于 2023-6-6 17:04
我只要记录他每天打卡一次的记录知道今天有多少人来现场就可以了,

那你在报表中按照每天的日期分组,按照人员统计distinctcount数就可以了吧。就可以知道每一天有多少个人来了
作者: 晨光熹微    时间: 2023-6-6 17:13
美滋滋 发表于 2023-6-6 17:10
那你在报表中按照每天的日期分组,按照人员统计distinctcount数就可以了吧。就可以知道每一天有多少个人 ...

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

作者: 美滋滋    时间: 2023-6-6 17:17
你要是只关注每个人每天第一条数据,你可以用SQL每天只抽取每个人的第一条数据。
例如:
select * from (
select 打卡日期字段,
员工ID字段,
打卡时间字段,
row_number() over (partition by 每天日期字段,员工ID字段 order by 打卡时间) as cno
from 员工打卡记录表
) where cno = 1
作者: 晨光熹微    时间: 2023-6-6 17:25
yhdata_ruby 发表于 2023-6-6 17:05
可以使用SQL查询语句来过滤出每个员工每天的第一次打卡记录。具体的实现方式可能会因所使用的数据库系统 ...

这个需要在数据库里执行马
作者: 晨光熹微    时间: 2023-6-6 17:26
yhdata_ruby 发表于 2023-6-6 16:56
方法1、使用自服务数据集的分组与汇总功能
方法2、新建计算列:fixed(员工::max(打卡)) ...

自服务器数据集的分组与汇总功能可以展示不参与分组与汇总功能的字段吗?如果可以?怎么添加呢
作者: yhdata_ruby    时间: 2023-6-6 17:27
晨光熹微 发表于 2023-6-6 17:25
这个需要在数据库里执行马

看你sql 写在哪把,数据库执行好了就可以在数据集直接展示
作者: 晨光熹微    时间: 2023-6-6 17:28
yhdata_ruby 发表于 2023-6-6 17:27
看你sql 写在哪把,数据库执行好了就可以在数据集直接展示

数据集里可以写sql吗?如果可以的话 具体在哪里写呢?
作者: yhdata_ruby    时间: 2023-6-6 17:29
晨光熹微 发表于 2023-6-6 17:28
数据集里可以写sql吗?如果可以的话 具体在哪里写呢?


这里写哇



作者: 晨光熹微    时间: 2023-6-6 17:30
yhdata_ruby 发表于 2023-6-6 17:29
这里写哇

好的。多谢
作者: yhdata_ruby    时间: 2023-6-6 17:31
晨光熹微 发表于 2023-6-6 17:30
好的。多谢

不客气
作者: 晨光熹微    时间: 2023-6-6 17:32
yhdata_ruby 发表于 2023-6-6 17:31
不客气

那自服务器数据集的分组与汇总功能可以展示不参与分组与汇总功能的字段吗?如果可以?怎么添加呢,我觉得这个是不是简单些
作者: yhdata_ruby    时间: 2023-6-6 17:38
晨光熹微 发表于 2023-6-6 17:32
那自服务器数据集的分组与汇总功能可以展示不参与分组与汇总功能的字段吗?如果可以?怎么添加呢,我觉得 ...

这个暂时不支持欸
作者: 晨光熹微    时间: 2023-6-6 17:41
yhdata_ruby 发表于 2023-6-6 17:38
这个暂时不支持欸

好的
作者: yhdata_ruby    时间: 2023-6-6 17:42
晨光熹微 发表于 2023-6-6 17:41
好的

嗯嗯




欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4