Sql 按类别计算记录的百分比
我有一个名为author的表,名为authorIdPK。第二个名为article的表包含articleIDPK、articleTitle、articleText、authorIdFK、categoryIdFK。第三个表名为category,带有categryIdPK,categoryText 如何获取作者使用sql编写的特定类别文本的文章百分比?使用select和groupby以及名为count的聚合函数。你可能已经知道了。然后,请注意,%只是点击数除以所有内容数乘以100的可读性 因此,两个查询的草图如下所示:Sql 按类别计算记录的百分比,sql,Sql,我有一个名为author的表,名为authorIdPK。第二个名为article的表包含articleIDPK、articleTitle、articleText、authorIdFK、categoryIdFK。第三个表名为category,带有categryIdPK,categoryText 如何获取作者使用sql编写的特定类别文本的文章百分比?使用select和groupby以及名为count的聚合函数。你可能已经知道了。然后,请注意,%只是点击数除以所有内容数乘以100的可读性 因此,两个查
Select count(*) from FooTable;
将结果写入某个变量,如@totalCount,然后
-- watch out for the division; the value divided must be floating-point or you'll get all zeroes
Select categoryName, 100.0*count(*)/@totalCount
from FooTable
group by categoryName
如果您的sql方言允许并且愿意,您可以将其粘合到一个查询中,如:
select categoryName, 100.0*hits/allcount
from
(
Select
categoryName,
count(*) as hits
from FooTable
group by categoryName
) as subq
cross join
(
Select
count(*) as allcount
from FooTable
) as allstats
在MsSqlServer上的t-SQL中,上述操作正常。但是,它会运行两次聚合,一次用于命中计数,一次用于所有计数。“allcount”并不是真的需要。因为一旦有命中率,您可能需要计算视图中的总计数和动态百分比
编辑:相同的甚至更短
Select
categoryName,
count(*) * 100.0 / ( Select count(*) as allcount from FooTable)
from FooTable
group by categoryName
我们需要看到你方的一些努力,然后才能得出答案。你使用的是哪种数据库管理系统?博士后?Oracle?ErikE我现在想的是创建一个查询:从文章中选择countarticles,但我不知道如何设置WHERE,以便连接TableArticle和category,并指定我需要一个特定的类别