by 민가놈 [SQL Query] mariadb query select [2023.08.14 16:48:12]
현재 조회 쿼리 작성 중인데
이게 가능 한지도 모르겠습니다.
조건은 타임이라는 컬럼이 있는데 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 ;