Подсчитывать данные каждый день - PullRequest
0 голосов
/ 03 марта 2020

Привет, я пытаюсь написать запрос, который даст мне результат Счет продолжительностью больше 10 для каждого сотрудника в день.

sapmle data

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)

Примечание: Date_time имеет тип varchar, но получил неправильный результат, он выглядит далеко не так, как я ожидал.

Надеюсь кто-нибудь поможет мне с этим

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Пожалуйста, проверьте это, это работает для меня.

Обратите внимание, вы должны проверить это.

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)
Другой способ
SELECT
    A.USERNAME,
    CONVERT(DATE,A.DATE_TIME) AS DATE_TIME,
    COUNT(A.DURATION) TotalCount
FROM
    TBLACCESSLOGS A
WHERE
    DURATION > 10
GROUP BY
    USERNAME,
    CONVERT(DATE,A.DATE_TIME)
1 голос
/ 03 марта 2020

Вы довольно близки к ожидаемому результату. Просто используйте TRUN C следующим образом:

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'))

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...