랭크함수를 이용하면 손쉽게 순위를 매길 수 있다. PATITON BY는 분석함수를 사용할 때 그룹으로 묶어서 연산을 할 수 있게 해 준다. ROW_NUMBER()와 PARTITION by를 이용해 순위 정하기 select idx,cate1,cnt,rn from( SELECT idx,cate1,cnt, ROW_NUMBER() over(PARTITION by cate1 order by cnt desc) as rn from tt_board ) c where rn < 3랭크함수를 이용해 카테고리별로 cnt가 높은 2개의 데이터만 조회해 봤다. 랭크함수는 여러 가지가 있지만 ROW_NUMBER()만 순위 중복 허용을 하지 않기에 사용했다.쿼리를 실행해 보면 카테고리별로 cnt가 높은 데이터가 2개씩 조회되는 것을..
MARIA DB란?Maria DB는 무료 오픈소스 관계형 데이터베이스(RDBMS)이다. 마리아라는 이름은 MySQL을 개발했던 책임 개발자의 2번째 딸의 이름에서 가져왔다고 전해진다. 그리고 로고는 MySQL의 상징인 돌고래와 비슷한 강치이다.MARIA DB의 탄생비화MySQL이 오라클에 인수된뒤 MySQL은 8.0버전이 릴리즈 되었다. 하지만 오라클은 라이센스를 유료화 했고(학생, 비상업용 제외) MySQL의 창업자중 한명인 몬티 와이드니스는 이를 못마땅해 한다. 결국 MySQL 출신 개발자들이 따로 나와 재단을 세우고 만든것이 바로 MariaDB 이다. MARIA DB와 MY SQL의 호환성초창기 버전인 MariaDB 5.5는 MySQL 5.5 버전을 기반으로 만들었기에 거의 흡사하고 모든 기능이 호..
DECLARE @PAGE_NO INT = 0 -- 페이지 번호 DECLARE @PAGE_SIZE INT = 10 -- 한 페이지에 보여줄 row 수 페이징 쿼리를 만들 때 필요한 건 현재 페이지 번호와 한 화면에 출력될 페이지수가 필요하다. 페이지번호는 뷰단에서 사용자가 누른 페이지번호를 받아서 처리한다. 1. OFFSET ROWS FETCH NEXT(2012 버전부터 사용 가능) SELECT t1.* FROM 테이블명 AS t1 WITH(NOLOCK) INNER JOIN ( SELECT id FROM 테이블명 WITH(NOLOCK) ORDER BY reg_date DESC OFFSET (@PAGE_NO) * @PAGE_SIZE ROWS FETCH NEXT (@PAGE_SIZE) ROWS ONLY ) A..