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 41420 게시물 읽기
No. 41420
group by 안쓰고 row 갯수와 첫번째 row 특정 컬럼값 가져오기
작성자
선이
작성일
2017-06-08 15:27
조회수
6,245


table A
no  | subject
-------------
A01 | test

table B
no  |  desc
------------
A01 | AAAA
A01 | BBBB

이렇게 있을때

no  | desc | cnt
----------------
A01 | AAAA | 2

위와 같은 결과를 얻고 싶습니다.


GROUP BY를 안쓰고도 가능할까요?


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

WITH ta AS
(
SELECT 'A01' no, 'test' subject FROM dual
)
, tb AS
(
SELECT 'A01' no, 'AAAA' dsc FROM dual
UNION ALL SELECT 'A01', 'BBBB' FROM dual
)
-- 1. Group By 쓰면 편한데???
SELECT a.no
     , MIN(b.dsc) dsc
     , COUNT(*) cnt
  FROM ta a
     , tb b
 WHERE a.no = b.no
 GROUP BY a.no
;
-- 2. 왜 굳이 안쓰려는지???
SELECT no
     , dsc
     , cnt
  FROM (SELECT a.no
             , b.dsc
             , COUNT(*) OVER(PARTITION BY a.no) cnt
             , ROW_NUMBER() OVER(PARTITION BY a.no ORDER BY dsc) rn
          FROM ta a
             , tb b
         WHERE a.no = b.no
        )
 WHERE rn = 1
;

마농(manon94)님이 2017-06-08 17:24에 작성한 댓글입니다.

답변감사합니다.

다른 테이블이 더 있어서 GROUP BY를 쓸수 없는부분이 있어서 질문드렸습니다.

저는

FIRST_VALUE (b.desc) OVER (PARTITION BY a.no ORDER BY b.desc)를 썼었는데..ROW_NUMBER()으로 수정해야겠네요.

선이님이 2017-06-08 18:17에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41424오라클클라이언트 12.2.0 과 12.1.0 차이
오라클
2017-06-19
6096
41423두개 Table row Count 비교 하기 [1]
jp
2017-06-15
6713
41422오라클 시험준비해야하는데 문제푸는거 도와주실분 계씬가요 ㅠㅠ
쀼쀼
2017-06-12
5988
41420group by 안쓰고 row 갯수와 첫번째 row 특정 컬럼값 가져오기 [2]
선이
2017-06-08
6245
41419procedure에서 loop update 속도 관련 문의드립니다. [1]
홍준표
2017-06-08
6155
41418DB 계정분리 시 효율적인 방법 문의드립니다.
병아리DBA
2017-06-05
5887
41417TABLESPACE 의 PK값 삭제
lee
2017-06-02
6099
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다