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
운영게시판
최근게시물
MS-SQL Q&A 5926 게시물 읽기
No. 5926
mssql 쿼리 질문입니다.
작성자
안효수(준이네)
작성일
2011-08-04 09:30ⓒ
2011-08-04 09:39ⓜ
조회수
6,587

가입하자마자 질문올리려니 정말 염치가 없네요

제가 하려고 하는 것이...

date                          name                   disease_name                      진료비
2011-08-01           홍길동                         발목염좌                              500
2011-08-01            김씨                           요추염좌                                400
2011-08-01             박씨                            협착증                                  500

2011-08-02                김씨                      요추염좌                                 400
2011-08-02            홍길동                      소화장애                                400

2011-08-03              박씨                          협착증                                    300
2011-08-03            홍길동                       소화장애                                500

2011-08-04             박씨                        소화장애                                  300


이런 식의 테이블이 있을 경우

2011년 08월에 내원한 환자의 주요질병 (disease_name - 가장 많이 호소하는 질병) 과 진료비 합을 구하려고 합니다.

그럼
2011-08 에서

 

name  disease_name 진료비총합  총진료일
홍길동 소화장애  1,400 3
김씨 요추염좌 800 2
박씨 협착증 1,100 3

  


이런 식으로 데이타를 출력하려면 쿼리 작성식이 어떻게 되나요?
고수님들의 도움 바랍니다.

 

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

select name, disease_name, sum(진료비) 진료비총합, count(*) 총진료일 from 테이블명

group by name, disease_name

하시면 되겠네요

1님이 2011-08-04 15:09에 작성한 댓글입니다.
이 댓글은 2011-08-04 15:09에 마지막으로 수정되었습니다. Edit

그렇게만 된다면 좋겠는데요.
문제는 그게 아니고 환자가 내원한 날이 여러날인데..

예를 들면 홍길동은 3일을 내원했는데, 그 중 하루는 발목염좌로 진료 이틀은 소화장애로 진료를 받았습
그러면  홍길동의 2011년 8월의 대표 질병은 소화장애가 됩니다.

2011년 8월달 홍길동의 진료내역에서

이름     /   대표질병   / 진료비총합  / 총진료일
홍길동  /  소화장애     /    1400      /    3
  ...       /         .....           /      ....          /   ..
이렇게 출력하려고 하는 것입니다.

안효수(준이네)님이 2011-08-04 16:11에 작성한 댓글입니다.

원하시는게 환자별 대표질병을 구하는거군요..

방법은 여러가지가 있겠으나

inline - view 를 사용한 방법은 아래와 같이 하시면 되겠네요..

select name, (

      select disease_name from 

            (select top 1 disease_name, count(*) cnt from 테이블명 b where a.name=b.name order by cnt desc) ) disease_name, sum(진료비) 진료비, count(*) 총진료일 from 테이블명 a

 

MSSQL이 없어서 테스트 해보진 않았습니다...

1님이 2011-08-04 18:15에 작성한 댓글입니다. Edit

감사합니다.

덕분에 해결되었습니다.

안효수(준이네)님이 2011-08-04 18:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
5929질문입니다. GROUP BY 사용하여 데이터 가로로 뽑고자 합니다. [2]
최명근
2011-08-10
8022
5928그룹별 상위 n개 조회쿼리 질문 [3]
네로
2011-08-09
9046
5927마지막 주 주말 구하기? [2]
낭자
2011-08-04
7447
5926mssql 쿼리 질문입니다. [4]
안효수
2011-08-04
6587
5925원격 서버 데이터베이스 접근 Select [1]
김명호
2011-08-03
6207
5924쿼리 질문...count 관련 [1]
최지훈
2011-07-27
6265
5922MSSQL 쿼리질문요.. [2]
최범선
2011-07-26
6279
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다