SQL 查询统计每个用户组发文章数量并按数量排序
有三个表文章表记录文章标题、内容、发布人发布时间,用户表记录用户组id用户名密码,用户组表记录id用户组名称问题是现在要查询每个用户组发布文章的数量,并且按着数量排序。不...
有三个表 文章表 记录文章标题、内容、发布人 发布时间,用户表 记录用户组id 用户名 密码,用户组表 记录id 用户组名称
问题是 现在要查询每个用户组发布文章的数量,并且按着数量排序。不知道怎么搞呀 大神们
还要查询 每个月中发文排行榜.... 展开
问题是 现在要查询每个用户组发布文章的数量,并且按着数量排序。不知道怎么搞呀 大神们
还要查询 每个月中发文排行榜.... 展开
3个回答
展开全部
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);
有问题再追问,望采纳。
展开全部
以下语句可用于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 数量
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
[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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询