Sql 每天统计数据

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

您好,我正在尝试编写一个查询,它将为我提供每个员工每天超过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     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你能帮我吗[好的,兄弟让我检查一下]你能帮我吗[好的,兄弟让我检查一下]。