database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30646 게시물 읽기
No. 30646
질문 있씁니다. 누가 좀 돠 주세요.
작성자
이해열(humor1004)
작성일
2013-10-08 10:26
조회수
9,716

 현재 엑셀에서 알바의 일급을 계산하고 있습니다.

이것을 mysql 과 php 로 구현 할려고 합니다.

알바의 일급은  일이 시작하는 시간과 끝나는 시간을 입력하면

자동으로 엑셀표에 의해서 가격이 나타나는 방식 입니다.

아래 알바 단가표가 있습니다.

이것을 어떻게 mysql 로 만들어야 할지 난감합니다.

 

시간 계산 입력을 받을때는 시작시간 : 09:00,  종료시간 : 16:00   이런식으로 입력값을 받아서

시작시간과 종료시간 을 입력 받아 아래표를 바탕으로 09:00 시작 해서 16:00에 끝나면 이사람의 일당은 40,000 원  됩니다.

만약 끝나는 시간이 휴게시간일 경우 그 전 끝나는 타임의 값을 가지고 와야 합니다.

예를 들어 09:00에 시작해서  17:30 에 끝나면  끝나는 시간이 휴게 시간이니깐. 그전타임 16:30~17:29 의 데이타를 가지고 와야 되는데 이건 뭐 둘째치고

아래 알바단가표를 어떻게 mysql DB 로 만들고 시작시간, 끝나는 시간을 가지고 쿼리를 날려서 최종 가격을 가지고 와야 할지 몰겠씁니다.

누가 힌트라도 좀 주시면 정말로 감사하겠습니다. 일주일째 고민중입니다만 안되네요.

humor1004@naver.com, 010-2727-0666 이해열. 입니다. 문의는 언제든지 주시구요. 고수님들의 한수 부탁 드리겠씁니다. 감사합니다.

 

알바단가표

 

이 글에 대한 댓글이 총 3건 있습니다.

이 거대한 표 안에는 뭔가 함정(숨어있는 룰)이 숨어있을꺼야.... 그렇지 않다면 난 여기 취직해서

00:31에 출근해서 01:22에 퇴근하면서 16만5천원을 받은 후에 ( 10분 쉬고 )
01:32에 출근해서 02:26에 퇴근하면서 16만5천원을 받는 거지.. ( 10분 쉬고 )
02:36에 출근해서 03:26에 퇴근하면서 이번엔 무려 17만3천원을 받고...

이런 식으로 하면 난 하루에 무려 300만원은 벌 수 있는데...
두어 달이면 1억은 너끈하겠고...
 

저.. 혹시 사람 안 뽑으시나요? 저 위의 시나리오대로만 근무할 수 있다면 무조건 일하고 싶습니다만...
물론 이정도 쯤이야 복잡한 mysql이고 php고 다 필요없고 언제 어디서나 휴대하면서 사용하실 수 있도록 javascript로 짜드릴 수 있습니다만... 원하시면 앱으로도... (물론 함정에 빠져서 완성은 못하겠지만 말이죠.. -_-;; )

 

MS-SQL에서 놀러왔습니다만.. -_-;;

 

 

걍 잡설만 날리다가 물러가면 넘흐 죄송하니... 휴게 부분은 표에서 미리 왼쪽 값을 땡겨다가 넣어두세요.. 그럼 쉽잖아요.. ㅋ (물론 data duplication쯤이야 끽해봐야 48개 밖에 안되니 빠르게 타이핑하는 것이 쉽고.... )

 

결론: 이 표에는 함정이 있... --_--;

우욱님이 2013-10-08 17:17에 작성한 댓글입니다. Edit

 윗분께 답변 드립니다.

출퇴근이 자기 마음데로 하는게 아닙니다.

0:31에 출근해서 01:22에 퇴근하면서 16만5천원을 받은 후에 ( 10분 쉬고 )

이건 24시간을 일하게 되는겁니다.

표에는 함정이 없습니다, 다만 좀 오해의 소지가 있을수 있겠네요.

제가 단순하게 알바 단가표라고 해 놔서 그랬을수도 있으나

시작 햇으면 끝날때까지 어디가지를 못합니다.

계속 해야 합니다. ( 그렇다고 일을 하는건 아닙니다. 대기 하는 시간이 많죠...)

 

아무쪼록 좋은 의견 있으시면 좀 힌트라도 부탁 드리겠습니다.

시작 시간과 끝시간 을 가지고 일당을 가지고 오면 되고, 끝나는 시간이 휴게 시간일 경우 그 전 시간

의 단가표를 가지고 오면 됩니다.

이해열(humor1004)님이 2013-10-08 17:35에 작성한 댓글입니다.
-- MySQL 설치해 놓은게 없어서 얼개만 짜봤습니다.
 
CREATE TABLE payPerTime(
bgnTick TIME
, endTick TIME
, payCheck INT
)
;
 
INSERT INTO payPerTime( bgnTick, endTick, payCheck )
VALUES( '23:30:00', '00:30:00', 40000 )
, ('23:30:00', '01:30:00', 40000 )

, ('23:30:00', '07:30:00', 55000 )

, ('23:30:00', '08:30:00', 55000 )    -- 휴게에서 끝나도 그 앞시간 급여로 강제 입력
;
 
 
--input values 출근한시각과 퇴근한시각
SET @inTick = '23:33:33', @outTick = '00:37:44';
 
-- calculated values 출근한시각의 한시간전, 퇴근한시각의 한시간전
SELECT @boundInTick = CASE WHEN HOUR( @inTick ) = 0 THEN ADDTIME( @inTick, '23:00:00' ) ELSE ADDTIME( @inTick, '-01:00:00' ) END
, @boundOutTick = CASE WHEN HOUR( @outTick ) = 0 THEN ADDTIME( @outTick, '23:00:00' ) ELSE ADDTIME( @outTick, '-01:00:00' ) END
;
 
-- 출근한시각와 그 한시간 전 사이에 bgnTick이 들어있다면 급여 테이블에서 해당하는 시작 시간을 찾은거고 퇴근은 마찬가지...
SELECT payCheck
FROM payPerTime
WHERE
bgnTick <= @inTick 
AND bgnTick > @boundInTick
AND endTick <= @outTick
AND endTick > @boundOutTick
;
 
-- 다 해봐야 576개 밖에 안되는 테이블이라 인덱스가 과연 의미가 있을지는 테스트를 안 해봐서.. -_-;;

 

우욱님이 2013-10-10 21:59에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
30649제발 도와주세요 ㅠㅠ
임홍래
2013-10-20
9048
306483개의 테이블 데이터를 하나로 불러오려면요?
2013-10-10
8723
30647기존에 만들어놓은 trigger 보는 방법? [2]
윤민승
2013-10-08
9176
30646질문 있씁니다. 누가 좀 돠 주세요. [3]
이해열
2013-10-08
9716
30645MySQL UDF 관련 질문. 한글처리 문제 [1]
김석찬
2013-10-08
8923
30643이 트리거가 왜 안될까요?? [1]
가비닷
2013-10-04
8989
30642Transaction Isolation Level과 Binary Log의 상관관계에 관한 질문... [2]
김성환
2013-09-30
9656
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다