mysql에서 출력된 rows 값 %비율로 출력하는 법 0 3 481

by dizzyzz [MySQL] [2021.04.01 15:20:22]


mysql 에서 데이터를 rows를 출력 후 이에 대한 값을 %로 출력하려고 합니다

아직 초보 수준이라 그런지 여기저기 다 뒤져서 적용해봐도 에러만 계속 뜨네요...

그래서 이렇 도움을 받고자 질문 드립니다.

select 
    name, rows 
from 
    information_schema.tables 
where 
    table_schema = 'tables' 
order by table_rows desc;

까지 하면 

name rows percentage
b 20  
a 10  
d 10  
c 5  
e 5  

여기까지는 나오는데 %값을 출력하고 싶은데 어렵네요..

by pajama [2021.04.01 17:23:05]

전체 row수 합에 대한 비율인가요?

SELECT 
    TABLE_NAME, 
    TABLE_ROWS, 
    NVL(TABLE_ROWS/ (SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TEST')*100,0) PERCENT
FROM 
    INFORMATION_SCHEMA.TABLES 
WHERE 
    TABLE_SCHEMA = 'TEST' 
GROUP BY TABLE_NAME, TABLE_ROWS

 


by dizzyzz [2021.04.01 18:13:38]

감사합니다. 한번에 해결됐네요!

추가 질문 드립니다.

출력값이 소수점 아래 4자리까지 나오는데 round 사용해서 조절하려니 적용이 안되네요... 어떻게 적용해야할까요..?


by 뉴비디비 [2021.04.01 20:57:58]

pajama님 쿼리 약간 수정해서, ROUND 적용은 이렇게 한 번 해 보시죠.

SELECT
    TABLE_NAME
    , TABLE_ROWS
    , ( TABLE_ROWS / SUM(TABLE_ROWS) OVER() ) * 100 AS rowPercent -- 테이블별 row수 비율
    , ROUND( ( TABLE_ROWS / SUM(TABLE_ROWS) OVER() )*100 , 1) AS roundPercent -- 비율 Round
    , SUM(TABLE_ROWS) OVER () AS totalRows -- 전체 Row수 
FROM
    INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'mysql'
ORDER BY TABLE_NAME

 

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