MS-SQL, 간단한 것 같은데, 의외로 어려운 조건의 합 구하기

MS-SQL, 간단한 것 같은데, 의외로 어려운 조건의 합 구하기

작성일 2023.08.03댓글 2건
    게시물 수정 , 삭제는 로그인 필요

도대체 이 질문을 몇번을 하는지 모르겠네요...ㅠㅠ

결과물은 반드시 아래와 같아야 합니다.

<결과물>
TOP_SEC / BK_SEC / SEC / 읽은글수
K01 / 222 / 102 / 2
K01 / 333 / 102 / 1

위와 같은 결과물이 나오지 않으면 오류입니다.
주의 : 반드시 한번의 쿼리로 결과를 내어야 합니다. 프로시져 사용 불가.

<테이블 설명>
Z1_BBS : 글 레코드입니다. 키값은 글번호를 포함하여 4개입니다.
Z1_BBS_CNT : 글을 읽은 히스토리입니다. 즉, aaa가 같은 글을 중복해서 읽으면 읽을 때마다 레코드가 생성됩니다.

<데이타 정보>

drop table Z1_BBS
drop table Z1_BBS_CNT

create table Z1_BBS(
TOP_SEC nvarchar(06) not null,
BK_SEC nvarchar(06) not null,
SEC nvarchar(06) not null,
NUM int not null,
TITLE nvarchar(200) null,
CONTENT nvarchar(max) null,
DT datetime default getdate(), /* 글등록일 */
constraint Z1_BBS_PK primary key (TOP_SEC, BK_SEC, SEC, NUM)
);

create table Z1_BBS_CNT(
SEQ int identity(1,1),
TOP_SEC nvarchar(06) null,
BK_SEC nvarchar(06) null,
SEC nvarchar(06) null,
NUM int null,
UID nvarchar(20) null,
DT datetime default getdate(),
constraint Z1_BBS_CNT_PK primary key (SEQ)
);

insert into Z1_BBS values 
('K01', '222', '101', 1, '알립니다.', '내용없음', '2023-06-11'),
('K01', '222', '102', 1, '작년대비 수출실적 300% 증가.', '내용없음', '2023-07-12'),
('K01', '222', '102', 2, '홍길동 대표님, 중소기업인 대표로 청와대 방문.', '내용없음', '2023-07-08'),
('K01', '222', '102', 3, '잘살아보세.', '내용없음', '2023-06-02'),
('K01', '222', '104', 1, '듀얼모터적용기술.', '내용없음', '2023-07-15'),
('K01', '333', '102', 1, '다른 경로를 통한 뉴스', '내용없음', '2023-07-22');

insert into Z1_BBS_CNT (TOP_SEC, BK_SEC, SEC, NUM, UID) values 
('K01', '222','101', 1, 'aaa'),
('K01', '222','102', 2, 'aaa'),
('K01', '222','102', 2, 'aaa'),
('K01', '222','102', 2, 'aaa'),
('K01', '222','102', 2, 'aaa'),
('K01', '222','102', 3, 'aaa'),
('K01', '333','102', 2, 'aaa');


실제 결과물을 테스트 해 보시고 답변 주시면 고맙겠습니다.
대부분의 답벼자님들은 답변이 있는 경우, 내용을 보지 않기 때문입니다.
부탁드립니다.




profile_image 익명 작성일 -

안녕하세요

도움되실 내용으로 답변드립니다.

이 쿼리는 각 구역에서 읽은 글의 수를 집계하여 나타냅니다.

SELECT

B.TOP_SEC,

B.BK_SEC,

B.SEC,

COUNT(DISTINCT B.NUM) AS READ_COUNT

FROM

Z1_BBS B

INNER JOIN

Z1_BBS_CNT C

ON

B.TOP_SEC = C.TOP_SEC

AND B.BK_SEC = C.BK_SEC

AND B.SEC = C.SEC

AND B.NUM = C.NUM

GROUP BY

B.TOP_SEC,

B.BK_SEC,

B.SEC

이 쿼리는 두 테이블을 병합하여 읽은 글의 수를 집계합니다. 구역 정보(TOP_SEC, BK_SEC, SEC)를 기반으로 그룹화하여 각 구역에서 읽은 고유 글의 수를 카운트합니다.

읽은 글의 수를 카운트할 때는 DISTINCT를 사용하여 중복된 글 번호를 제거합니다. 이로 인해 사용자가 한 번 이상 읽은 글이여도 하나로 카운트됩니다.

도움되셨으면 좋겠습니다.

감사합니다.

profile_image 익명 작성일 -

안녕하십니까? 답변드려요.

안녕하세요! MS-SQL과 관련된 질문을 주셨네요. 이해하기에는 간단한 문제로 보이지만 조건이 어려워서 여러 번 물어보시는 것 같습니다. 결과물은 특정 조건을 만족해야 하고, 한 번의 쿼리로 결과를 내야한다고 하셨군요. 문제를 해결하기 위해서는 몇 가지 단계를 거쳐야 합니다. 함께 알아보도록 할까요?

**Step 1:** 테이블에서 필요한 값들을 선택합니다.

sql

SELECT TOP_SEC, BK_SEC, SEC, COUNT(SEQ) AS 읽은글수

FROM Z1_BBS_CNT

GROUP BY TOP_SEC, BK_SEC, SEC

**Step 2:** 결과물 형식을 맞추기 위해 필요한 칼럼들을 선택합니다.

sql

SELECT 'K01' AS TOP_SEC, BBS.BK_SEC, BBS.SEC, 읽은글수

FROM (

SELECT TOP_SEC, BK_SEC, SEC, COUNT(SEQ) AS 읽은글수

FROM Z1_BBS_CNT

GROUP BY TOP_SEC, BK_SEC, SEC

) AS CNT

INNER JOIN Z1_BBS AS BBS

ON CNT.TOP_SEC = BBS.TOP_SEC AND CNT.BK_SEC = BBS.BK_SEC AND CNT.SEC = BBS.SEC

**Step 3:** 결과물을 정렬합니다.

sql

SELECT 'K01' AS TOP_SEC, BBS.BK_SEC, BBS.SEC, 읽은글수

FROM (

SELECT TOP_SEC, BK_SEC, SEC, COUNT(SEQ) AS 읽은글수

FROM Z1_BBS_CNT

GROUP BY TOP_SEC, BK_SEC, SEC

) AS CNT

INNER JOIN Z1_BBS AS BBS

ON CNT.TOP_SEC = BBS.TOP_SEC AND CNT.BK_SEC = BBS.BK_SEC AND CNT.SEC = BBS.SEC

ORDER BY BBS.BK_SEC ASC, BBS.SEC ASC, BBS.NUM ASC

위의 단계들을 따라하시면 원하는 결과물을 얻을 수 있습니다. 테스트 후에 문제가 있다면 다시 알려주세요. 도움이 되셨기를 바랍니다!

도움이 되시면 좋겠습니다.

거상 1월3일날 오픈하는 테스트 서버요 ^^

... 거기다가 방학이라 사람 무지하게 몰릴것같은데 초반에... 허나, 쉬우면서도 어려운 것이 바로 장사입니다. 자... 그러기에, 여기에서는 간단한 용어 몇 개를 알아보도록...

거상 테섭 초반 생시 먹기

... 어려울거같은데 조선이 빠르죠 ?? 6.제 계획은... 허나, 쉬우면서도 어려운 것이 바로 장사입니다. 자, 그럼... 그러기에, 여기에서는 간단한 용어 몇 개를 알아보도록 합시다....

수학자들의업적

... 관한 , 방정식론에 관한 것이 요약되어 있다. 그... 《간단한 군사기술 입문》 《천구론(天球論) 또는... 또 뉴턴 역학의 바탕인 관성의 법칙에 관해 그 성립 조건을...

연대별 수학자와 그 수학자들의 업적을...

... 관한 , 방정식론에 관한 것이 요약되어 있다. 그... 《간단한 군사기술 입문》 《천구론(天球論) 또는... 또 뉴턴 역학의 바탕인 관성의 법칙에 관해 그 성립 조건을...

수학자들의 출생,일화,수학적 업적 좀...

... 관한 , 방정식론에 관한 것이 요약되어 있다. 그... 《간단한 군사기술 입문》 《천구론(天球論) 또는... 또 뉴턴 역학의 바탕인 관성의 법칙에 관해 그 성립 조건을...

2007년 미국GNP,GDP

... ◆ 교역조건 변화를 반영한 GNI 국민소득 개념 중 GDP와... 작업일 것 같은데요. 그래도 결과는 현재의 부동산... 무엇보다도 영업이익을 구하기 위해 필요한 ‘매출’을...

거상테섭이요..ㅠㅠ

... 알아낸거같은데... 쉬프트는 도저히 모르겟군요 제... 허나, 쉬우면서도 어려운 것이 바로 장사입니다. 자, 그럼... 그러기에, 여기에서는 간단한 용어 몇 개를 알아보도록...

거상 일본인 육성법 물오볼께요 (내공...

... 사냥터같은데도 둘러보고 뒤적뒤적하는게 좋아요.... 허나, 쉬우면서도 어려운 것이 바로 장사입니다. 자, 그럼... 그러기에, 여기에서는 간단한 용어 몇 개를 알아보도록...

세계적으로 유명한 과학자와 수학자 좀...

... 관한 , 방정식론에 관한 것이 요약되어 있다. 그... 《간단한 군사기술 입문》 《천구론(天球論) 또는... 또 뉴턴 역학의 바탕인 관성의 법칙에 관해 그 성립 조건을...

거상공략법좀

... 초보분들은 루트라는 단어와는 거리가 있는거 같은데;;... 허나, 쉬우면서도 어려운 것이 바로 장사입니다. 자... 그러기에, 여기에서는 간단한 용어 몇 개를 알아보도록...