횽들
밑에처럼 고객명이 있고, 날짜가 있고 결과코드가 있어
sql 문으로
고객 1명 당, 날짜가 최근인 순으로 6개씩만, 결과코드가 뽑고 싶어
예를 들어서 밑에처럼 이병헌, 이다희, 글램, 이지연, 이민정, 강병규라는 고객이 6명만 있다,
그러면 6 * 6 36개의 날짜 최근 순으로 결과코드가 알고 싶은거지.
도움 좀...
횽들
밑에처럼 고객명이 있고, 날짜가 있고 결과코드가 있어
sql 문으로
고객 1명 당, 날짜가 최근인 순으로 6개씩만, 결과코드가 뽑고 싶어
예를 들어서 밑에처럼 이병헌, 이다희, 글램, 이지연, 이민정, 강병규라는 고객이 6명만 있다,
그러면 6 * 6 36개의 날짜 최근 순으로 결과코드가 알고 싶은거지.
도움 좀...
아니 그게 아니라.. 밑에 존나 많은거지
날짜 순으로 쎄워서... 강병규의 최근 여섯개 결과코드랑 이병헌의 최근 여섯개 결과코드가 알고싶어
select * from table where name="강병규" order by date asc limit 0,6
그럼 회원이 1200만 명 잇으면 select * from table where name="강병규" order by date asc limit 0,6 1.11 를 1200만번 해야해?ㅜㅜ
오라클이면 펑션써야 된다. RANK() OVER (PARTITION BY ..) 하면 쉽게 될듯 , 니새키가 요구하는것을 내가 이해한건 , 그룹으로 묶은뒤 각 그룹의 랭킹을 매긴다 최신순으로 말이다. 그걸 서브쿼리로 해서 랭킹이 6 이내인 애들만 골르면 되겠다. 다만 오라클 한정이다.
뭐 MYSQL이나 별 잡스런 곳에서도 비슷한 펑션들이 있는지는 모르겠다
SELECT * FROM (SELECT RANK() OVER (PARTITION BY 고객명 ORDER BY 날짜 DESC) AS 랭킹, 고객명, 결과코드) WHERE 랭킹 <= 6