mysql 그룹화? 를 찾고있습니다. 도와주세요 ㅠㅠ

mysql 그룹화? 를 찾고있습니다. 도와주세요 ㅠㅠ

QA

mysql 그룹화? 를 찾고있습니다. 도와주세요 ㅠㅠ

본문

5 07.01(수) 2020-07-01 16:43:08        6초 / 윙            10,800 원    2
6 07.01(수) 2020-07-01 16:43:10        닭똥집 튀김    10,000 원    2
7 07.01(수) 2020-07-01 17:18:22        생맥) 500cc    8,000 원    2
8 07.01(수) 2020-07-01 16:43:12        생맥) 500cc    8,000 원    2
9 07.01(수) 2020-07-01 16:43:17        참이슬        4,000 원    2
10 07.01(수) 2020-07-01 17:18:25        참이슬        4,000 원    2
11 07.01(수) 2020-07-01 18:10:31        배달팁        3,000 원    1
12 07.01(수) 2020-07-01 18:10:35        후라이드치킨    16,900 원    1
13 07.01(수) 2020-07-01 18:42:10        고추치킨        18,900 원    1
14 07.01(수) 2020-07-01 18:41:33        배달팁        3,000 원    1
15 07.01(수) 2020-07-01 18:42:19        치킨무        500 원    1
16 07.01(수) 2020-07-01 19:05:57        고추치킨        18,900 원    1
17 07.01(수) 2020-07-01 19:05:53        배달팁        3,000 원    1
18 07.01(수) 2020-07-01 19:14:15        배달팁        3,000 원    1
19 07.01(수) 2020-07-01 19:14:49        양념치킨        17,900 원    1


안녕하세요. 도움을 요청드려봅니다 ㅠㅠ
mysql 그룹으로 가능할지 궁금합니다.

 

위 표에서 배달팁 시간을 기준으로 +1분 -1분 을 하나로 묶으려 합니다.
전 후 1분 기준으로 하나의 배달이어서 색을 다르게 준다던지 표시를 통해 그룹화를 시키는 방법을 찾고있습니다ㅠㅠ


쿼리를 두번 줘서 for 로 뿌리려니 양이 너무 많아서 페이지가 안넘어가네요 ㅠㅠ

mysql 로 안되면 for 문에서 하는 방법이 있을까요?
하... 초보라 많이 답답하네요. 부탁드립니다 흑흑 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 4

자체적으로 해결했습니다.

주문시간 전후 1분을 묶어 그중 배달팁이 포함된 그룹을 묶어주니 일단은 해결되었네요.

다만 쿼리 속도가 넘 늦네요. 조금더 좋은 해결방안이 나오면 이곳에 공유해놓겠습니다. 도움 주신분들 정말 감사드립니다! 꾸벅!!

원래  +1 -1분 으로 가는게 아니라 특정 거래건 큰건을 하나의 shop으로 가고

그 키값을 가지고 세부테이블만들어서 세부내역 쭉 넣어야할거같은데요

배달팁(특정거래건)을 기준으로 한번 뿌리고 그 키값을 가지고 시간 오차 변수 만든 후 다시 쿼리를 만든다는 방법인가요? 데이터가 많아 두번 뿌리는건 거의 불가능할거같습니다 ㅠㅠ 댓글 정말 감사드립니다!

배달 대행업체에서 제공하는 데이터를 받아서 그대로 저장하시는건가요?

저장시에 주문번호같은 고유값을 만들어서 저장하시고

이미 저장된 데이터는 확인용 필드를 하나 만들고 날짜로 정렬해서 일정갯수로 쿼리 for문으로 첫번째 시간부터 순번(ID)를 저장하면서 시간오차범위를 넘어서거나 배달팁이 하나가 포함되면 주문번호 생성 및 재가공 식별자 업데이트, 배달팁이 두개이상이라면 수작업으로 확인할수 있게 마킹식별자 업데이트 같이 재가공하시는게 더 좋을것 같은데요

 

추신) 주문오더품목 예상최대 갯수를 설정하고 반복문에서 남은 갯수 이하라면 빠져나가게 설정하셔야됩니다.

이미 저장되어있는 DB에 주문번호는 없더라구요. ㅜㅜ그래서 배달팁 시간을 기준으로 배달 하나 하나를 묶어야할거같은데 양이 너무 많아서 수작업으론 힘들듯싶네요 ㅠㅠ 답글 정말 감사합니다! ㅠㅠ

주문번호가 없더라도 식별자는 yyyymmddhhmmss + 순번이 autoincrement라면 초당 최대주문갯수 이상으로 해당값의 뒷자리를 가져와서 만드시면 되실것 같은데요
e.g.)
최대예상 주문갯수: 100
순번값: 987654321
최종 고유값: yyyymmddhhmmss + 321 처럼하시면 되실것 같은데요
매번 체크하시는것보다 한번 재가공하시는게 개발 및 유지보수가 쉬울것 같습니다.

아 이해 했습니다! 그런 방법도 있네요.!!
고정된 db를 사용해야하는 경우라 재가공은 어려울듯하여 방법을 찾고있었습니다 ㅠㅠ
말씀하신대로 주문시간대를 이용해서 방법을 한번 찾아봐야겠네요!! 감사드립니다!

님 말씀처럼 날짜별로 가져와서처리하게되면 0시 기준 연속된 이월주문이 없다는 전제가 붙어야됩니다.
해당 DB를 수정 못한다는 말씀이신지 추가DB생성도 못하신다 말씀이신지요?
DB 생성/수정 자체를 못하시는거라면 파일로 아카이빙할수도 있습니다.

의사 결정자에게 DB 및 파일 생성도 못하는 제약조건이 붙는다면 퍼포먼스는 버리고 페이징처리 기준 잡기 및 코드 복잡도는 높아질수 밖에 없다고 말씀하세요

쿼리를 날릴 때 하루씩 뽑거나 시간대별로 끊어서 작업하시면 안되나요?
전체를 다 하기에 무리라면 시간대별로 끊거나 일자별로 끊어서 작업하면 되지 싶은데요.

 

select * from 주문테이블 where 배달팁시간 between '오늘 시작시간' and '오늘 마지막 시간';
일단 이렇게만 뽑아서 날짜별로 정리한 후 작업을 해 보시는 건 어떨까요?

감사합니다! 배달이 없는 주문도 있는터라 함께 뽑으면서 배달만 그룹화 시킬 방법을 찾고있습니다 ㅠㅠ 방법이 잘 안나오면 우선 일자별로 진행을 해봐야겠네요! 감사합니다! ^^

답변을 작성하시기 전에 로그인 해주세요.
전체 123,127 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT