[SQL] 총 시간은 하루 MySQL의에서 일하기
SQL총 시간은 하루 MySQL의에서 일하기
나는 직원의 로그인과 로그 아웃 타이밍이 기록되는 MySQL의 테이블이 있습니다. 여기서, 인 - 아웃 칼럼 로그인 1- 나타냄 아웃을 0-나타낸다.
[id] [User_id] [Date_time] [in_out]
1 1 2011-01-20 09:30:03 1
2 1 2011-01-20 11:30:43 0
3 1 2011-01-20 11:45:12 1
4 1 2011-01-20 12:59:56 0
5 1 2011-01-20 13:33:11 1
6 1 2011-01-20 15:38:16 0
7 1 2011-01-20 15:46:23 1
8 1 2011-01-20 17:42:45 0
그것은 단일 쿼리를 사용하여 사용자가 하루에 일한 총 시간을 검색 할 수 있습니까?
나는 헛된에서 많은입니다 제외한 모든 시도했다. 나는 배열하지만 단일 쿼리를 사용하여 그렇게 할 수 없습니다를 사용하여 PHP에서이 작업을 수행 할 수 있습니다.
해결법
-
==============================
1.
SELECT `User_id`, time(sum(`Date_time`*(1-2*`in_out`))) FROM `whatever_table` GROUP BY `User_id`;
(1-2 *`in_out`) 용어는 모든 로그인 이벤트에게 -1 요인 및 모든 로그 아웃 이벤트 +1 요인을 제공합니다. SUM 함수는 DATE_TIME 열의 합을 취하고, GROUP BY 'User_id` 각각의 다른 사용자에 대한 합이 만들어 지도록한다.
-
==============================
2.생각의 루디의 라인은 정확합니다. 당신은 진수와 시간을 원하는 경우에, 그렇지 않으면 반환 형식이 될 것이라고 DATE_TIME 필드에서 DATETIME을 UNIX_TIMESTAMP ()를 사용 (하드 구문 분석). 여기에 데이터의 첫 번째 4 개 라인의 결과 플러스 2 다른 일에 더 :
생각의 루디의 라인은 정확합니다. 당신은 진수와 시간을 원하는 경우에, 그렇지 않으면 반환 형식이 될 것이라고 DATE_TIME 필드에서 DATETIME을 UNIX_TIMESTAMP ()를 사용 (하드 구문 분석). 여기에 데이터의 첫 번째 4 개 라인의 결과 플러스 2 다른 일에 더 :
SELECT `user_id`, DATE(`date_time`) AS `date`, SUM(UNIX_TIMESTAMP(`date_time`)*(1-2*`in_out`))/3600 AS `hours_worked` FROM `test` GROUP BY date(`date_time`), `user_id`; +---------+------------+--------------+ | user_id | date | hours_worked | +---------+------------+--------------+ | 1 | 2011-01-20 | 3.2567 | | 1 | 2011-01-21 | 3.0000 | +---------+------------+--------------+
-
==============================
3.이것을를 사용 해보세요 :
이것을를 사용 해보세요 :
select [User_id], sum([Time_count])/3600 from ( select [User_id], case when [in_out]=1 then UNIX_TIMESTAMP([Date_time]) when [in_out]=0 then - UNIX_TIMESTAMP([Date_time]) end as [Time_count] from my_table ) as a group by [User_id]
누군가 발견 오류,이를 수정하십시오 그래서 MySQL의 구문을 모른다. 아마 작동하지 않을 수 있습니다. 예를 들어 사용자가 로그인 한 경우.이 경우는 하나의 상기 [in_out] 필드 0의 개수가 동일한 경우에만 사용자를 필터링 할 수있다.
from https://stackoverflow.com/questions/4745182/get-total-hours-worked-in-a-day-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] JDBC를 사용하여 dbms_output.get_lines에서 얻기 출력 (0) | 2020.06.11 |
---|---|
[SQL] SQL의 날짜 일련? (0) | 2020.06.11 |
[SQL] 다가오는 생일을 선택 MYSQL (0) | 2020.06.11 |
[SQL] SQL : 집계 문자열 함께 (0) | 2020.06.11 |
[SQL] 두 번째 SELECT 쿼리의 경우 첫 번째 SELECT 반환 0 행 (0) | 2020.06.11 |