select한 row의 수를 select한 결과로 가져 올 수 있을까요? 0 4 2,322

by 준일정 [SQL Query] mssql sql oracle mysql [2019.05.09 10:55:08]


11.jpg (19,304Bytes)

실제 데이터는 

id 이름
100 정준일
101 정준이
102 정준삼
103 정준사

 

이지만 

 

어떤 쿼리 마법(?)을 부려서 

이미지 처럼 select 할 수 있나요??

by 르매 [2019.05.09 11:15:35]

독심술이 필요하겠네요.

row 수의 규칙을 설명해 주세요.

짐작하기론.. "id로 오름차순 정렬했을 때, 첫번째 행의 row수 컬럼에만 전체 row count를 출력하고, 나머지 행에서는 NULL을 출력한다"인 것 같긴한데요.


by 준일정 [2019.05.09 11:31:46]

규칙은 없습니다. 

select의 count(*) 의 값이면 됩니다. 


by 마농 [2019.05.09 13:28:00]

규칙이 없는게 아니라...
count(*) 가 첫번째 줄에 나온다는게 규칙인 거죠.


by 르매 [2019.05.09 12:39:39]

대략 이렇겠네요.

-- MySQL
SET @i = 0;

SELECT `id`, `name`
    , IF(seq = 1, (SELECT COUNT(*) FROM library_in_seoul), NULL) AS `row_count`
FROM (
    SELECT `id`, `name`, @i := @i + 1 AS seq
    FROM `table_name`
    ORDER BY `id`
) S;

-- MS-SQL
SELECT [id], [name]
    , CASE seq WHEN 1 THEN (SELECT COUNT(*) FROM [table_name]) ELSE NULL END AS [row_count]
FROM (
    SELECT ROW_NUMBER() OVER(ORDER BY [id]) AS seq, [id], [name]
    FROM [table_name]
) S;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입