현재 조회 쿼리 작성 중인데
이게 가능 한지도 모르겠습니다.
조건은 타임이라는 컬럼이 있는데 1,2,3~~N 까지 있고
ID는 각각의 타임을 갖습니다.
테이블은
time id
0 a
1 a
2 a
3 a
...n a
0 b
1 b
2 b
3 b
...n b
이런식으로 있는데 제가 조회 하고 싶은건
a라는 전체 조회 수 나누기 20 한 값을 조회하고 싶습니다.
가령 N이라는 값이 2000이면 2000/20 해서 총 100 단위로 출력 하고 싶습니다.
a 0, 100, 200, -- 2000
b 0, 150, 300, -- 3000
이게 쿼리로 출력이 가능 할련지 쉽지 않네요
서버 단에서 좀 처리하고 들어가야 할지 어떨까요
WITH t AS
(
SELECT 'a' id, seq - 1 tm FROM seq_1_to_201
UNION ALL SELECT 'b', seq - 1 FROM seq_1_to_301
)
SELECT id
, MIN(CASE tm / unit WHEN 0 THEN tm END) tm_00
, MIN(CASE tm / unit WHEN 1 THEN tm END) tm_01
, MIN(CASE tm / unit WHEN 2 THEN tm END) tm_02
, MIN(CASE tm / unit WHEN 3 THEN tm END) tm_03
, MIN(CASE tm / unit WHEN 4 THEN tm END) tm_04
, MIN(CASE tm / unit WHEN 5 THEN tm END) tm_05
, MIN(CASE tm / unit WHEN 6 THEN tm END) tm_06
, MIN(CASE tm / unit WHEN 7 THEN tm END) tm_07
, MIN(CASE tm / unit WHEN 8 THEN tm END) tm_08
, MIN(CASE tm / unit WHEN 9 THEN tm END) tm_09
, MIN(CASE tm / unit WHEN 10 THEN tm END) tm_10
, MIN(CASE tm / unit WHEN 11 THEN tm END) tm_11
, MIN(CASE tm / unit WHEN 12 THEN tm END) tm_12
, MIN(CASE tm / unit WHEN 13 THEN tm END) tm_13
, MIN(CASE tm / unit WHEN 14 THEN tm END) tm_14
, MIN(CASE tm / unit WHEN 15 THEN tm END) tm_15
, MIN(CASE tm / unit WHEN 16 THEN tm END) tm_16
, MIN(CASE tm / unit WHEN 17 THEN tm END) tm_17
, MIN(CASE tm / unit WHEN 18 THEN tm END) tm_18
, MIN(CASE tm / unit WHEN 19 THEN tm END) tm_19
, MIN(CASE tm / unit WHEN 20 THEN tm END) tm_20
FROM (SELECT id, tm
, FLOOR(MAX(tm) OVER(PARTITION BY id) / 20) unit
FROM t
) a
WHERE tm % unit = 0
GROUP BY id
;
잘 응용 및 사용 하겠습니다. 맨날 쿼리 관련 검색할 때마다 나오던 분인데
답변 직접 받으니 신기하네요 감사합니다
유명인 맞아용 ㅋㅋ 국내 1위 컴퓨터 잡지 마이크로소프트웨어 기술 커럼도 아주 오랫동안 담당하셨지용