Sql 计算SSI中的十大类别
我正在使用SSIS包每天更新我的内容。有数千个内容具有不同的审核ID,我想为每个审核ID计算前十个类别。在我意识到我应该为每个审核ID计算它之前,我使用此查询获取要更新的内容:Sql 计算SSI中的十大类别,sql,sql-server,ssis,Sql,Sql Server,Ssis,我正在使用SSIS包每天更新我的内容。有数千个内容具有不同的审核ID,我想为每个审核ID计算前十个类别。在我意识到我应该为每个审核ID计算它之前,我使用此查询获取要更新的内容: SELECT TOP 10 ModerationId, Category, COUNT(ContentSeqNum) AS Total FROM Content WHERE Category IS NOT NULL GROUP BY ModerationId, Category ORDER BY ModerationId
SELECT TOP 10 ModerationId, Category, COUNT(ContentSeqNum) AS Total FROM Content
WHERE Category IS NOT NULL
GROUP BY ModerationId, Category ORDER BY ModerationId, Total DESC
这是一种错误的方法,因为此查询计算所有数据的前十个类别,对于不同的ModerationId,它们应该是不同的前十个类别
如何更改此查询以计算每个审核ID的前10个类别?尝试以下操作:
SELECT TOP(10) ModerationId, Category, COUNT(ContentSeqNum) OVER(PARTITION BY ModerationId ORDER BY ModerationId) AS Total
FROM Content
WHERE Category IS NOT NULL
ORDER BY Total DESC
试试这个:
SELECT TOP(10) ModerationId, Category, COUNT(ContentSeqNum) OVER(PARTITION BY ModerationId ORDER BY ModerationId) AS Total
FROM Content
WHERE Category IS NOT NULL
ORDER BY Total DESC
使用行数函数
select * from
(
select *,
row_number() over(partition by ModerationId order by ModerationId) as sno
from Content WHERE Category IS NOT NULL
) as t
where sno<=10
在中找到更多方法使用行数函数
select * from
(
select *,
row_number() over(partition by ModerationId order by ModerationId) as sno
from Content WHERE Category IS NOT NULL
) as t
where sno<=10
在中查找更多方法使用窗口函数获取用于计算排名前十的调节ID类别的方法。请尝试此操作
SELECT moderationid,
category,
total
FROM (SELECT Row_number() OVER (partition BY moderationid
ORDER BY Count(contentseqnum)) Rn,
moderationid,
category,
Count(contentseqnum) AS Total
FROM content
WHERE category IS NOT NULL
GROUP BY moderationid,
category) A
WHERE rn <= 10
使用窗口函数获取用于计算调节ID的前十个类别的值。请尝试此操作
SELECT moderationid,
category,
total
FROM (SELECT Row_number() OVER (partition BY moderationid
ORDER BY Count(contentseqnum)) Rn,
moderationid,
category,
Count(contentseqnum) AS Total
FROM content
WHERE category IS NOT NULL
GROUP BY moderationid,
category) A
WHERE rn <= 10
只需按总说明排序,不确定修改了什么。这是适度。但我不确定仅仅按总数排序是否有效,因为这只会占据所有数据的前十位,对每一个中庸者来说并不特殊。按总数排序的中庸者不确定修改了什么。这是中庸者。但我不确定仅仅按总量排序是否有效,因为这只会占据所有数据的前十位,对每一位中庸者来说并不特别感谢您花时间,但这对我不起作用。它显示了同一类别的多行。感谢您花时间,但这对我不起作用。它显示同一类别的多行。仅供参考-除非您有TOP,否则不能在子查询中使用order bykeyword@NoDisplayName抱歉,不需要subquery.FYI-除非您有TOP,否则无法在子查询中使用order bykeyword@NoDisplayName对不起,不需要子查询。啊,我搞错了,我试着在另一个答案上加上这个评论。这仍然有效,很抱歉给您带来不便。啊,我犯了一个错误,我试图在另一个答案中添加评论。这仍然有效,不便之处,敬请原谅。