Sql 每天统计数据
您好,我正在尝试编写一个查询,它将为我提供每个员工每天超过10次的持续时间计数结果 sapmle数据Sql 每天统计数据,sql,oracle,Sql,Oracle,您好,我正在尝试编写一个查询,它将为我提供每个员工每天超过10次的持续时间计数结果 sapmle数据 EVENTID USERID DATE_TIME READERID READERNAME LOGTYPE USERNAME RESULT DURATION 188110074 50078 2020-03-02 22:01:31 544381441 LOCKER IN SUBIA, MAY 0
EVENTID USERID DATE_TIME READERID READERNAME LOGTYPE USERNAME RESULT DURATION
188110074 50078 2020-03-02 22:01:31 544381441 LOCKER IN SUBIA, MAY 00:12 12
188099752 50078 2020-03-02 21:48:52 544381436 LOCKER OUT SUBIA, MAY
188098672 50078 2020-03-02 21:47:10 544381441 LOCKER IN SUBIA, MAY
188098656 50078 2020-03-02 21:47:06 544381441 LOCKER IN SUBIA, MAY 15:45 945
187972279 50078 2020-03-02 06:01:54 544381436 LOCKER OUT SUBIA, MAY
187949027 50078 2020-03-02 04:30:46 544381441 LOCKER IN SUBIA, MAY 00:16 16
187933475 50078 2020-03-01 22:44:47 544381431 LOCKER IN SUBIA, MAY 00:04 4
187933289 50078 2020-03-01 22:40:41 544381436 LOCKER OUT SUBIA, MAY
187926256 50078 2020-03-01 22:01:31 544381431 LOCKER IN SUBIA, MAY 00:14 14
187914503 50078 2020-03-01 21:46:42 544381428 LOCKER OUT SUBIA, MAY
180769437 1214201592 2020-01-20 08:13:06 544381436 LOCKER OUT ALLAN YAP
180771730 1214201592 2020-01-20 08:36:38 544381431 LOCKER IN ALLAN YAP 00:23 23
180775099 1214201592 2020-01-20 09:07:04 544381436 LOCKER OUT ALLAN YAP
180777340 1214201592 2020-01-20 09:30:53 544381431 LOCKER IN ALLAN YAP 00:23 23
180778948 1214201592 2020-01-20 09:48:58 544381436 LOCKER OUT ALLAN YAP
180781714 1214201592 2020-01-20 10:04:52 544381431 LOCKER IN ALLAN YAP 00:15 15
预期产量
USERID DATE_TIME Count
50078 2020-03-02 3
50078 2020-03-01 1
1214201592 2020-01-20 3
这是我试过的
Select count, USERNAME, DATE_TIME
from (
Select A.USERNAME,A.DATE_TIME , Count(A.Duration) count
from TBLACCESSLOGS A
where Duration > 10
Group by Date_Time,USERNAME)
注:日期\时间为varchar类型
但结果不对,看起来和我预想的相去甚远
希望有人能帮我解决这个问题你离你的预期产出已经很近了。只需按如下方式使用TRUNC:
SELECT
A.USERNAME,
A.USERID, -- this
TRUNC(TO_DATE(A.DATE_TIME,'YYYY-MM-DD HH24:MI:SS')) AS DATE_TIME,
COUNT(A.DURATION) COUNT
FROM
TBLACCESSLOGS A
WHERE
DURATION > 10
GROUP BY
A.USERNAME,
A.USERID, -- this
TRUNC(TO_DATE(A.DATE_TIME,'YYYY-MM-DD HH24:MI:SS'))
干杯 您已经非常接近您的预期输出。只需按如下方式使用TRUNC:
SELECT
A.USERNAME,
A.USERID, -- this
TRUNC(TO_DATE(A.DATE_TIME,'YYYY-MM-DD HH24:MI:SS')) AS DATE_TIME,
COUNT(A.DURATION) COUNT
FROM
TBLACCESSLOGS A
WHERE
DURATION > 10
GROUP BY
A.USERNAME,
A.USERID, -- this
TRUNC(TO_DATE(A.DATE_TIME,'YYYY-MM-DD HH24:MI:SS'))
干杯 请检查这个,这是我的工作 注意你需要检查这个
DECLARE @Date VARCHAR(30) ='2020-03-02 22:01:31';
SELECT CAST(@DATE AS DATE) SELECT CONVERT(DATE,@DATE)
SELECT
A.USERNAME,
CAST(A.DATE_TIME AS DATE) AS DATE_TIME,
COUNT(A.DURATION) TotalCount
FROM
TBLACCESSLOGS A
WHERE
DURATION > 10
GROUP BY
USERNAME,
CAST(A.DATE_TIME AS DATE)
另一种方式
请检查一下,这是我的工作 注意你需要检查这个
DECLARE @Date VARCHAR(30) ='2020-03-02 22:01:31';
SELECT CAST(@DATE AS DATE) SELECT CONVERT(DATE,@DATE)
SELECT
A.USERNAME,
CAST(A.DATE_TIME AS DATE) AS DATE_TIME,
COUNT(A.DURATION) TotalCount
FROM
TBLACCESSLOGS A
WHERE
DURATION > 10
GROUP BY
USERNAME,
CAST(A.DATE_TIME AS DATE)
另一种方式
请检查此选择计数,用户名,日期时间从选择A.USERNAME,CASTA.DATE\u TIME作为日期日期时间,CountA.Duration计数从TBLACCESSLOGS A其中Duration>10按CASTA.DATE\u TIME作为日期,USERNAMEiteral分组与指向日期时间的格式字符串不匹配,我忘了说日期时间是varchar数据类型OK,没问题:你能检查一下这个DECLARE@Date VARCHAR30='2020-03-02 22:01:31';选择CAST@DATE如日期选择CONVERTDATE,@DATE请检查此选择计数,用户名,日期时间从选择A.USERNAME,CASTA.DATE\u TIME作为日期时间,CountA.Duration计数从TBLACCESSLOGS A,其中Duration>10 Group by CASTA.DATE\u TIME作为日期,UsernameTeral与指向日期时间的格式字符串不匹配,我忘了说日期时间是varchar数据类型OK,没问题:你能检查一下DECLARE@Date VARCHAR30='2020-03-02 22:01:31';选择CAST@DATE当日期选择CONVERTDATE时,@DATEtrunc不起作用,因为日期时间为Varchar2数据类型问题如何包含用户ID我尝试了选择A.USERNAME、A.userID、TRUNCTO\u DATEA.DATE\u time、'yyyyyy-MM-DD HH24:MI:SS'作为日期时间,来自TBLACCESSLOGS A的COUNTA.DURATION计数,其中A.DURATION>45-A.DURATION>10和D.ISRESTDAY 1和TRUNCTO_DATE A.DATE_时间,'YYYY-MM-DD HH24:MI:SS'=truncsysdate-1组,按用户名、用户ID、TRUNCTO_DATE A.DATE_时间,“YYYY-MM-DD HH24:MI:SS”当我将其加入到其他表中时,查询需要10分钟才能执行,并且每个用户只返回1天,请选择A.USERNAME,A.USERID,-此TRUNCTO_DATEA.DATE_TIME,'yyyyy-MM-DD HH24:MI:SS'作为日期时间,COUNTA.TBLACCESSLOGS中的持续时间计数LpadA.USERID上的内部联接tblemployeGroup B,'6',“0”=B.EMPLOYEEID内部连接TBLSHIFTGROUP C on B.GROUPCODE=C.GROUPCODE内部连接TBLSHIFTROTATESCHED D on C.SHIFTCODE=D.SHIFTCODE其中DURATION>45 GROUP BY A.USERNAME,A.USERID,-此TRUNCTO_DATEA.DATE_TIME,'YYYYYY-MM-DD HH24:MI:SS'您能帮我吗[trunc不工作,因为日期时间在Varchar2数据类型中问题我如何包含userID我尝试了此选项选择A.USERNAME、A.userID、TRUNCTO_DATEA.Date_time、'YYYY-MM-DD HH24:MI:SS'作为日期时间,COUNTA.DURATION COUNT从TBLACCESSLOGS A中选择A.DURATION>45-A.DURATION>10和D.ISRESTDAY 1和TRUNCTO_DATEA.DATE_TIME,'YYYY-MM-DD HH24:MI:SS'=truncsysdate-1 GROUP BY USERNAME,USERID,truncsysto_DATEA.DATE_TIME,'YYYY-MM-DD HH24:MI:SS'当我将其加入到另一个表中时,执行查询需要10分钟,每个用户只返回1天,选择A.USERNAME,A.USERID,-这个truncsysto_DATEA.DATEA.DATE时间,'YYYY-MM-DD HH24:SS'作为日期时间,COUNTA.DURATION COUNT FROM tblaccess在LpadA.USERID,'6','0'=B.EMPLOYEEID在B.GROUPCODE=C.GROUPCODE在C.SHIFTCODE=D.SHIFTCODE上记录内部连接TBLSHIFTGROUP B,其中DURATION>45按A.USERNAME、A.USERID分组,-此TRUNCTO_DATEA.DATE\u TIME、'YYYY-MM-DD HH24:MI:SS'ca你能帮我吗[好的,兄弟让我检查一下]你能帮我吗[好的,兄弟让我检查一下]。