这篇文章给大家分享的是有关MYSQL中SQL如何分组的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
在mysql中没有提供分组统计函数,但mysql中变量使用非常灵活,在sql中可以灵活使用变量,这给mysql实现分组的方式带来很大方便,因此在
mysql实现一个分组统计的功能也并不难以实现,且理解起来还比较容易,比如我们提供一下的数据,用来描述,查询出的关键词的词频数,然后根据关键词的
类型,分组统计组内词频出现次数最后的前三挑数据
CREATE TABLE `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) NOT NULL COMMENT '关键词频次',
`n` varchar(10) DEFAULT NULL,
`keyword` varchar(90) DEFAULT NULL COMMENT '关键词名称',
PRIMARY KEY (`content_id`,`keyword_id`),
KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
INSERT INTO dwsurvey.policy_keywords_rel (id,content_id,keyword_id,cnt,n,keyword)
VALUES (3,1,68860,3,'te','知识产权');
INSERT INTO dwsurvey.policy_keywords_rel (id,content_id,keyword_id,cnt,n,keyword)
VALUES (13,1,49258,5,'n','科技创新');
INSERT INTO dwsurvey.policy_keywords_rel (id,content_id,keyword_id,cnt,n,keyword)
VALUES (1,1,44177,19,'te','技术');
INSERT INTO dwsurvey.policy_keywords_rel (id,content_id,keyword_id,cnt,n,keyword)
VALUES (4,1,42982,3,'te','行业标准');
INSERT INTO dwsurvey.policy_keywords_rel (id,content_id,keyword_id,cnt,n,keyword)
VALUES (10,1,7405,6,'n','市政府');
select * from policy_keywords_rel
从如下sql中可以查询出,组内词频数据排名,且相同词频的数据排名相同
SELECT
T2.*
FROM
(
SELECT
T.*
,CASE
WHEN @MID = N and @TEMP_SCNT != SCNT THEN @ROW := @ROW + 1
WHEN @MID = N and @TEMP_SCNT = SCNT THEN @ROW := @ROW
ELSE @ROW := 1
END ROWNUM
,@MID := N MID
,@TEMP_SCNT := SCNT
FROM
(
SELECT
KEYWORD_ID,
KEYWORD,
SUM( CNT ) as SCNT,
N
FROM
POLICY_KEYWORDS_REL
GROUP BY
KEYWORD_ID,
N
ORDER BY
N,
SUM( CNT ) DESC
) AS T
) AS T2
WHERE
T2.ROWNUM <= 3
感谢各位的阅读!关于“MYSQL中SQL如何分组”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。