MySQLのグループ統計、ソート、最初のNレコード・ソリューションを取ります

レコードが10レコードの前にパケットの統計情報は、MySQLでの発注、および抽出機能を対処する必要があります。今、次のように解決策がある、解決されています:

1)テーブル構造

TABLE `CREATE(policy_keywords_rel`
` id` INT(11)NOT NULL AUTO_INCREMENT COMMENT 'インクリメントID'、
'content_id` INT(11)NOT NULL COMMENT '上記ID上記の記事'、
`keyword_id` INT(11)NOT NULL COMMENT「キーを言葉ID '
`cnt` int型(11)COMMENT NOT NULL'イメージ周波数'
VARCHAR内の' N '(10)DEFAULTのNULL、
` keyword` VARCHAR(90)COMMENT DEFAULTをNULL'キーワード名」、
PRIMARY KEY( ` content_id`、 `keyword_id`)、
KEY` id`(` id`)
)ENGINE = InnoDBのDEFAULT CHARSET = utf8をCOMMENT = 'キーワードテーブルとアーティクル'


オリジナルテーマデータテーブルセクションを以下に示します。

 

 

 

 

2)機能を実現
し、同じキーワードグループ統計総周波数(周波数キーワードとして「CNT」)、キーに従ってにおけるカテゴリごとにフィールド「N」(キーワード、カテゴリ)に基づいており、「keyword_id」(キーワードID)トップ10のそれぞれの下にグループ化されたキーワードを抽出する前に、降順での総ワード周波数、及び最終的に合計頻度。

 

3)ソリューション

SET @行= 0。SET @半ば= '';
SELECT T2 *(FROM。THEN SELECT T *、ケース中間@ = N @row:(SELECT keyword_id、キーワード、和(FROM = N半ば:= @行+ ELSE 1 @row:= 1つのENDのROWNUM、中間@ CNT)、N policy_keywords_relのFROM
GROUP BY keyword_id、N ORDER BY N、和(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