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
운영게시판
최근게시물
Oracle Q&A 41843 게시물 읽기
No. 41843
합계, 총합계표현
작성자
선이
작성일
2021-02-22 10:16
조회수
342

안녕하세요.

다음과 같이 결과를 표현하고 싶습니다.

 

업체명 날짜 수량1 수량2 업체명 날짜 수량1 수량2
롯데제과 20210222 10 10 롯데제과 20210223 10 10
빙그레 20210222 0 20 빙그레 20210223 20 0
오리온 20210222 50 50 오리온 20210223 50 50
합계   60 80     80 60
총합계     140       140


테이블구조도 위 화면과 동일하게 구성되었습니다.

수량1,2별 합계는 rollup으로 구했는데

합계에 대한 총합계(즉 날짜별 수량1+수량2)는 어떻게 해야할지 모르겠습니다. 통계는

저에게 너무 막막한 부분이네요.

도움부탁드립니다.

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

표가 좀 이상하긴 한데요.

수량1, 수량2, 합계(수량1+수량2) 3개 컬럼이라면 깔끔한데요.

수량2 컬럼에 총합계 값을 억지로 행까지 추가하여 끼워 넣는 방식이네요.

테이블 구조도 동일하다고 헸지만? 왠지 이상한 것 같아요.

날짜 컬럼 하나에 20210222, 20210223 둘다 들어 있을 것 같습니다.

날짜 컬럼 두개에 각각 들어 있을 것 같지가 않아요.

수량1, 수량2 도 한날짜에 두개 수량이 있는 것 맞나요?

일자별 거꾸로 배치된게 각 수량별 각 날짜에 매치되는게 아닌가 의심이 듭니다.

원본 대비 결과표를 정확히 제시해 주시거나

현재 결과를 추출하는 SQL 을 보여주시면 좋을 듯 합니다.

마농(manon94)님이 2021-02-22 15:30에 작성한 댓글입니다.

마농님

결과표는

업체 02월 22일 02월 23일
시간 수량1 수량2 시간 수량1 수량2
롯데제과 오전 10 10 오후 10 10
빙그레 오전   20 오전 20 0
오리온 오전 50 50 오후 50 50
합계   60 80   80 60
총합계     140     140


주5일을 기준으로 업체별 수량을 보여주는 화면입니다.

실제화면에서 상단에 날짜를 표기할수 없어서 앞에 보여드린 화면처럼 수량1옆에 날짜를 표기할 예정이고

결과표를 보고 테이블을 만들어서 좀 억지스러울수도 있겠네요.......

vendor_code

date1

time1

qty1_1

qty2_1

.......

date5

time5

qty1_5

qty2_5

테이블부터 다시 만들어야할까요??

선이님이 2021-02-23 10:58에 작성한 댓글입니다. Edit
실제 발생되는 자료 형태대로 테이블을 만들고, 필요한 모양대로 가공하여 조회하면 되는데요.
결과표와 똑같은 형태의 테이블을 만든다면? 합계 및 총합계 행도 만들면 되는 것 아닐까요?
억지스런 테이블 설계 및 모호한 결과표 모양 보다는
자연스러운 테이블 설계 및 명확한 결과표 형태가 되어야 할 것입니다.

WITH t
( vendor_code
, date1, time1, qty1_1, qty2_1
, date5, time5, qty1_5, qty2_5
) AS (
          SELECT '롯데제과', '20210222', '오전', 10, 10, '20210223', '오후', 10, 10 FROM dual
UNION ALL SELECT '빙그레'  , '20210222', '오전',  0, 20, '20210223', '오전', 20,  0 FROM dual
UNION ALL SELECT '오리온'  , '20210222', '오전', 50, 50, '20210223', '오후', 50, 50 FROM dual
)
SELECT DECODE(GROUPING(1), 1, '총') || NVL(vendor_code, '합계') vendor_code
     , date1, time1
     , DECODE(GROUPING(1), 0, SUM(qty1_1))                  qty1_1
     , DECODE(GROUPING(1), 1, SUM(qty1_1), 0) + SUM(qty2_1) qty2_1
     , date5, time5
     , DECODE(GROUPING(1), 0, SUM(qty1_5))                  qty1_5
     , DECODE(GROUPING(1), 1, SUM(qty1_5), 0) + SUM(qty2_5) qty2_5
  FROM t
 WHERE date1 = '20210222'
 GROUP BY ROLLUP(1, (vendor_code, date1, time1, date5, time5))
;
마농(manon94)님이 2021-02-23 18:50에 작성한 댓글입니다.
이 댓글은 2021-02-23 18:51에 마지막으로 수정되었습니다.

엉망으로 올렸는데도 답변해주셔서 감사합니다.

선이님이 2021-02-24 11:44에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41848테이블 조인 후 그룹별로 묶어서 그룹별 상위 1개씩 출력하고 싶습니다 [3]
노진규
2021-05-06
62
41847오라클 계정 생성 질문입니다.
박승우
2021-04-13
88
41844오라클 동적 쿼리시 %rowtype 바인딩 변수 에러
Felix
2021-03-03
221
41843합계, 총합계표현 [4]
선이
2021-02-22
342
41842오라클 딕셔너리 뷰끼리의 조인시, 조회속도 관련 문제...
이재현
2021-02-14
220
41841간단한듯 어려운 쿼리문제 도와주세요(전일자 데이터와 비교해서 행보여주기) [3]
로방뿡
2021-02-10
322
41840대용량 오라클 이중화 환경 서브노드 배치서버 이용 [1]
kkubee
2021-02-02
285
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2021 DSN, All rights reserved.
작업시간: 0.011초, 이곳 서비스는
	PostgreSQL v13.1으로 자료를 관리합니다