MySQL의 그룹 통계, 정렬, 첫 번째 N 기록 솔루션을

기록은 10 기록하기 전에 패킷 통계, MySQL의에서 주문 및 추출 기능을 해결해야합니다. 다음과 같이 이제 해결되었습니다 솔루션입니다 :

1) 테이블 구조

표`는 CREATE (policy_keywords_rel`
`id` INT (11)이 NOT NULL AUTO_INCREMENT 주석 '증가 ID',
`content_id` INT (11)이 NOT NULL 주석 '언급 한 ID를 위의 기사',
`keyword_id` INT (11)이 NOT NULL 주석 '키를 단어 ID ',
`cnt` INT (. 11)을 주석 처리 NOT NULL'이미지 주파수 ',
`VARCHAR를 내 n` (10) 디폴트의 NULL,
`keyword` VARCHAR (90)이 COMMENT 초기 상태 NULL'키워드 이름 ',
기본 키 (` content_id`,`keyword_id`),
KEY` id` (`id`)
) ENGINE = InnoDB의 DEFAULT CHARSET = UTF8 주석 = '키워드 테이블 기사'


원래 테마 데이터 테이블 섹션는 다음과 같습니다 :

 

 

 

 

2) 기능을 실현
동일한 키워드 그룹 통계 총 주파수에서 각각의 카테고리 (대 필드 'N'(키워드 카테고리)와 'keyword_id'(키워드 ID)에 기초하여 "CNT") 키워드 주파수로서, 그 키에 따른 상부 (10)의 각 그룹화 키워드를 추출하기 전에 내림차순 전체 단어 빈도, 마지막으로 전체 주파수.

 

3) 솔루션

SET @ 행 = 0; SET @ 중반 = '';
SELECT T2 * (FROM. SELECT T * 경우 WHEN @ 중간 = N @row THEN :. = @ 로우 + 1 ELSE @row = 1의 END ROWNUM 중간 @ FROM = N 중간 (keyword_id SELECT 키워드, SUM ( CNT), N policy_keywords_rel의 FROM
GROUP keyword_id BY, N ORDER BY N, SUM (CNT) DESC) AS T ) AS T2
T2.rownum <= 10


해결 방법 : ROWNUM을 사용 변수 @row은, 변수는 그룹에 사용 @mid. SQL 문 내측 문에 의한 순서로 데이터 세트가 통계적 좋은 패킷 그룹을 수득 즉, 키워드 및 키워드 카테고리 동일한 문서 동일한 키워드 전체 주파수의 각 카테고리에 대한 모든 통계 그룹화, 중간층 SQL 문 최 기록 ROWNUM 각 그룹에 따라 분류 추출한 동일 카운트에서 시작이 경우, 패킷 N 필드 ROWNUM 미드와 같은 값이 증가되는 SQL 명령문 취득 ROWNUM 각 구분 수.


실행 결과는 다음과 같다 :

 

 


원본 링크 : HTTPS : //blog.csdn.net/amino77/article/details/51546050

추천

출처www.cnblogs.com/Formulate0303/p/11962691.html