[SQL#001] 막대 그래프 그리기
아래 쿼리문은 책 [디비로 누리는 특별한 세상 SQL Server 개발편], [디비로 누리는 특별한 세상 SQL Server 운영편]에서 사용하고 있는 HRDB2 데이터베이스를 대상으로 하며, [자료실]에서 HRDB2 데이터베이스를 만드는 스크립트 파일을 전송받을 수 있다.
다음은 근무 중인 정보시스템 직원 정보를 조회하는 아주 평범한 쿼리문이다.
USE HRDB2 GO SELECT EmpID, EmpName, DeptID, HireDate, Salary FROM dbo.Employee WHERE DeptID = 'SYS' AND RetireDate IS NULL GO
[실행결과]
그런데 결과가 너무나 밋밋하다. 이런 결과에 약간의 변화를 줘보자. REPLICATE 함수를 사용하면 조금 재미있는 결과를 얻을 수 있다. 우선 다음 쿼리문과 같이 REPLICATE 함수는 같은 문자열을 지정한 수만큼 반복한 결과를 반환한다. ‘*’ 문자열을 10번 반복하라고 했으므로 ‘**********’ 이 그 결괏값이 된다.
SELECT REPLICATE('*', 10) AS [Bar] GO
[실행결과]
그렇다면 ‘*’ 대신 한글 자음 ㅁ을 입력하고 <한자> 키를 눌러 선택할 수 있는 특수 문자에서 ‘▒’를 10번 반복하면 어떻게 될까?
SELECT REPLICATE('▒', 10) AS [Bar] GO
[실행결과]
위 결과처럼 막대 그래프 모양을 보여준다. 이런 결과를 사용하면 단순하지만 그럴듯한 막대 그래프를 그릴 수 있다. 다음 쿼리문은 위 내용을 활용하여, 처음에 제시한 쿼리문을 수정한 것이다. REPLICATE(‘▒’, Salary / 200) 처럼 Salary 열 값을 200으로 나눈 것은, Salary 열 값만큼 ‘▒’ 문자를 표현하면 너무 길게 나오기 때문이다. 꼭 200으로 나누지 않고 300이나 400 등으로도 나눌 수 있지만, 200으로 나눈 결과가 제일 보기 좋아서 200으로 결정했다.
SELECT EmpID, EmpName, DeptID, HireDate, Salary, REPLICATE('▒', Salary / 200) AS [Bar] FROM dbo.Employee WHERE DeptID = 'SYS' AND RetireDate IS NULL GO
[실행결과]
어떠한가? 조금 그럴듯해 보이지 않는가? 이처럼 조금(?)은 재미있는 쿼리문을 작성해보면 쿼리문을 배우는 게 재미있어질 것이다.