Andrew Cumming, SQL Hacks

[목차(도우미)]
SQL Hacks
Andrew Cumming, Gordon Russell 공저
O'REILY출판사

SQL을 사용하여 데이터베이스 프로그램을 제어하다보면 필요한 SQL문을 마음대로 주무르고 싶은 생각이 든다. 간단한 select keys from table 구문이 아닌 여러가지 성능과 속도를 고려하면 SQL 언어 사양을 체계적으로 공부해서 전체적인 개관을 알아 두는 것이 도움이 된다.

그런 목적에서 SQL을 심도있게 보려고 했지만 원하는 수준에는 이르지 못하였더라도 소기의 목적을 이루는 것은 가능했다. 직접 이거다 싶은 내용을 짚어 말하기는 어렵지만 날짜 계산, FULLTEXT 검색(MATCH AGAINST구문) 이라든지 상위 랭크 검색에 관하여 mysql, sql server, PostgresSQL등의 각각 언어 사양에 따라 아이디어가 예시된 점이 돋보인다. 수년전 랭킹 표시를 위해서 인터넷에서 조사했을 때 만족할 만한 답을 얻지 못했지만, 이책을 보니 번뜩이는 아이디어가 풍부하다.

랭킹에 관해서만 잊기 전에 메모를 남겨 둔다.
출처: Hack #72, pp278-279

mysql, PostgresSQL
SELECT username, score FROM highscore
ORDER BY score DESC
LIMIT 10 OFFSET 10

Access, SQL Server
SELECT TOP 10 username, score
FROM highscore
WHERE username not in
    (SELECT TOP 10 username
     FROM highscore
    ORDER BY score DESC)
ORDER BY score DESC

Oracle
SELECT username, score FROM
    (SELECT rownum rnum, username, score FROM
        (SELECT username, score FROM highscore ORDER BY score DESC)
    )
WHERE rnum>10 and rnum <=20
by 금메달.아빠 on 2011. 2. 24. 00:17