데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
SELECT
ISNULL(SUM(CASE b.login_date WHEN '20170616' THEN count(DISTINCT b.user_id) ELSE 0 END),0)
,''
FROM TAUSER a,
(
SELECT * FROM TADAY x, TALOGINCCLOG y
WHERE x.tday = y.login_date
AND x.tday >= '20170616'
AND x.tday <= '20170616'
AND y.comp_no = '100'
) b
WHERE a.comp_no = b.comp_no
AND a.user_id = b.user_id
AND a.comp_no = '100'
AND a.is_monitor = 'Y'
GROUP BY b.comp_no , b.login_date, b.user_id
아래와 같은 쿼리인데요...
원래 오라클을 사용하다보니 SQL 쪽이 쉽지가 않네요..
어떻게 해결해야하나요?
Comment 1
-
知音
2017.06.22 11:32
해당일자의 user_id를 중복을 배제하고 Count 하고자 하는 것 같은데 중복해서 집계함수를 사용할
필요는 없어 보입니다.
이렇게 하면 안될까요 ?
ISNULL(COUNT(DISTINCT CASE WHEN b.login_date = '20170616' THEN b.user_id END),0)