SQL 查询统计每个用户组发文章数量并按数量排序

有三个表 文章表 记录文章标题、内容、发布人 发布时间,用户表 记录用户组id 用户名 密码,用户组表 记录id 用户组名称

问题是 现在要查询每个用户组发布文章的数量,并且按着数量排序。不知道怎么搞呀 大神们
还要查询 每个月中发文排行榜....

create table t1    --文章表
(
       title varchar2(10),
       content varchar2(100),
       userid varchar2(10),
       dt date   --假如格式为 2013-10-18 10:23:00
);
create table t2   --用户表
(
       groupid varchar2(10),
       userid varchar2(10),
       pwd varchar2(10)
);
create table t3  --用户组表
(
       contentid varchar2(10),
       groupid varchar2(10),
       groupnm varchar2(10)
);
1.select  groupid,groupnm,count(1)count from t3 group by groupid,groupnm order by count(1) desc; --降序
2.select groupid,count(1) from t1,t2 where t1.userid=t2.userid group by groupid,substring(dt,0,6);
有问题再追问,望采纳。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-26
以下语句可用于ms sql server。
SELECT COUNT(1) AS 数量, c.用户组名称 FROM 文件表 a INNER JOIN 用户表 b ON a.发布人 = b.用户名 INNER JOIN 用户组表 c ON b.用户组id = c.id GROUP BY c.id, c.用户组名称 ORDER BY 数量本回答被提问者采纳
第2个回答  2013-10-18
ARTICLE_T
[TITLE],[CONTENT],[PUBLISH_PERSON],[PUBLISH_TIME]

USER_T
[GROUP_ID],[USER_NAME],[USER_PASS]

GROUP_T
[GROUP_ID],[GROUP_NAME]

/*只显示组,并按组的发文数量排序*/
SELECT UT.GROUP_ID,COUNT(*) FROM ARTICLE_T AT,USER_T UT
WHERE AT.PUBLISH_PERSON=UT.USER_NAME
GROUP BY UT.GROUP_ID ORDER BY COUNT(*) DESC

/*显示所有数据并排序*/
SELECT T.* FROM
(SELECT ROW_NUMBER() OVER(PRATITION BY UT.GROUP_ID ORDER BY UT.USER_NAME) AS N,COUNT(AT.TITLE) OVER(PRATITION BY UT.GROUP_ID) AS C,AT.*,UT.*,GT.* FROM ARTICLE_T AT,USER_T UT,GROUP_T GT
WHERE AT.PUBLISH_PERSON=UT.USER_NAME
AND UT.GROUP_ID=GT.GROUP_ID) T
ORDER BY T.C DESC,T.GROUP_ID DESC,T.N ASC

/*只显示发文用户,并按发文用户的发文数量排序*/
SELECT UT.USER_NAME ,COUNT(*) FROM ARTICLE_T AT,USER_T UT
WHERE AT.PUBLISH_PERSON=UT.USER_NAME
GROUP BY UT.USER_NAME ORDER BY COUNT(*) DESC

/*显示所有数据并排序*/
SELECT T.* FROM
(SELECT ROW_NUMBER() OVER(PRATITION BY UT.USER_NAME ORDER BY AT.TITLE) AS N,COUNT(AT.TITLE) OVER(PRATITION BY UT.USER_NAME) AS C,AT.*,UT.*,GT.* FROM ARTICLE_T AT,USER_T UT,GROUP_T GT
WHERE AT.PUBLISH_PERSON=UT.USER_NAME
AND UT.GROUP_ID=GT.GROUP_ID) T
ORDER BY T.C DESC,T.GROUP_ID DESC,T.N ASC

SQL语句:用count求group by分组的个数
如person表 pid,sid 两字段我用sid分组,SQL语句如下:select count(*) num,sid from person group by sid结果如下:num sid5 00110 00212 0030 004我想要条SQL语句求共分有几组,如上结果是4组,应该怎么写? dongxq | 浏览45360 次 |举报 我有更好的答案推荐于2017-12-15 11:21:51 最佳答案 select ...

sql mysql多表如何关联查询
在使用UNION或ALL关键字将多个表合并输出时,查询结果必须具有相同的结构并且数据类型必须兼容,另外使用UNION时两张表的字段数量也必须相同,否则会提示SQL语句有错误。e.x:SELECT id,name,pwd FROM tb_demo067 UNION SELECT uid,price,date FROM tb_demo067_tel四简单嵌套查询子查询:子查询是一个SELECT查询,返回单个...

相似回答