SQL Count/sum in order子句

SQL Count/sum in order子句,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在为我正在使用的工具制作一个“排行榜”,我需要收集一些数字,并获得多行记录的数量 在这个存储过程中,您将看到我试图按两列之和对记录进行排序 关于如何做到这一点有什么建议吗 AS BEGIN SET NOCOUNT ON; BEGIN SELECT DISTINCT(whoAdded), count(tag) as totalTags, count(DISTINCT data

我正在为我正在使用的工具制作一个“排行榜”,我需要收集一些数字,并获得多行记录的数量

在这个存储过程中,您将看到我试图按两列之和对记录进行排序

关于如何做到这一点有什么建议吗

AS
BEGIN
SET NOCOUNT ON;
        BEGIN
            SELECT DISTINCT(whoAdded),
                    count(tag) as totalTags,
                    count(DISTINCT data) as totalSubmissions
            FROM   Tags_Accounts
            GROUP BY whoAdded
            ORDER BY SUM(totalTags + totalSubmissions) DESC
            FOR    XML PATH ('leaderboard'), TYPE, ELEMENTS, ROOT ('root');
        END 
END

您可以通过将其放入派生表中来实现这一点:

SELECT *
FROM (
    SELECT DISTINCT(whoAdded) AS whoAdded,
        count(tag) as totalTags,
        count(DISTINCT data) as totalSubmissions
    FROM   Tags_Accounts
    GROUP BY whoAdded
    ) a
ORDER BY totalTags + totalSubmissions DESC
FOR    XML PATH ('leaderboard'), TYPE, ELEMENTS, ROOT ('root')
或者,您可以按集合订购,但我认为上面的内容更简洁/冗余更少:

SELECT DISTINCT(whoAdded) as whoAdded,
    count(tag) as totalTags,
    count(DISTINCT data) as totalSubmissions
FROM   Tags_Accounts
GROUP BY whoAdded
ORDER BY SUM(count(tag) + count(DISTINCT data)) DESC
FOR    XML PATH ('leaderboard'), TYPE, ELEMENTS, ROOT ('root')
不要使用
SUM()
,只需使用
+
添加值,只需使用表达式而不是列别名:

ORDER BY count(*) + count(DISTINCT data) DESC

出现了什么错误?列名“totalTags”无效。和totalSubmissions,您会收到这些错误,因为
totalTags
totalSubmissions
只是别名。第一个返回无效的列名“totalTags”。列名“totalSubmissions”无效。内部
选择是否有效?如果没有,会出现什么错误?是否可以在没有排序依据的情况下运行它?它还会引发错误:“a”的第1列没有指定列名。如果没有排序依据,它将返回a的第1列上面提到的错误
ORDER BY count(*) + count(DISTINCT data) DESC