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

有三个表文章表记录文章标题、内容、发布人发布时间,用户表记录用户组id用户名密码,用户组表记录id用户组名称问题是现在要查询每个用户组发布文章的数量,并且按着数量排序。不... 有三个表 文章表 记录文章标题、内容、发布人 发布时间,用户表 记录用户组id 用户名 密码,用户组表 记录id 用户组名称

问题是 现在要查询每个用户组发布文章的数量,并且按着数量排序。不知道怎么搞呀 大神们
还要查询 每个月中发文排行榜....
展开
 我来答
jsczwangx
2013-10-18 · TA获得超过1222个赞
知道小有建树答主
回答量:777
采纳率:100%
帮助的人:631万
展开全部
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);
有问题再追问,望采纳。
zxd9915
推荐于2017-11-26 · TA获得超过299个赞
知道小有建树答主
回答量:461
采纳率:50%
帮助的人:213万
展开全部
以下语句可用于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 数量
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式