SQL 조회 순위 함수 인 스 턴 스

실제 개발 에 서 는 어떤 필드 의 순 위 를 계산 하 는 경우 가 많다.
다음 표:totaksales
//img.jbzj.com/file_images/article/201606/2016060811050012.jpg
지금 또 이렇게 요구 합 니 다:sales 의 역순 으로 정렬 하여 sales 를 추가 하 라 고 요구 합 니 다.랭 킹 필드,랭 킹 순서 표시
방법:
SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;
결과:
//img.jbzj.com/file_images/article/201606/2016060811050013.jpg
또는:
SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales < a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC;
결과:
//img.jbzj.com/file_images/article/201606/2016060811050014.jpg
위의 방안 에서 우 리 는 어떻게 어떤 항목 을 선택 할 것 인 지 를 계속 추측 할 수 있다.
예 를 들 어 순위 가 5 인 그 내용:
SELECT * from
(
SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank
FROM Total_Sales a1, Total_Sales a2
WHERE a1.Sales < a2.Sales or (a1.Sales=a2.Sales and a1.Name = a2.Name)
GROUP BY a1.Name, a1.Sales
ORDER BY a1.Sales DESC, a1.Name DESC
) as tab WHERE tab.sales_rank=5;
//img.jbzj.com/file_images/article/201606/2016060811050015.jpg
물론 이때 순 서 를 3 으로 바 꾸 면 내용 을 잘 찾 을 수 없다.이것 은 단점 이 므 로 수정 하고 계속 해 야 한다.
이상 은 SQL 조회 랭 킹 함수 인 스 턴 스 의 모든 내용 입 니 다.참고 해 주시 고 많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기