0

我有一个看起来像这样的表结构:

ClassId
ClassDescription

我的表的数据如下所示:

ClassId  ClassDesc
4           --- 
4           ---  
4           ---
4
4
2
2
2

现在我要做的是classId根据每个单独classId的含义获取计数,例如,上表将返回所有 classId = 4 的计数为 5,而 classId = 2 的计数为 3。

所以我的 Sql 语句分别计算它们并 Order BY DESC On Count of ClassId
4 计数为 5
2 计数为 3

最终输出应如下所示:

ClassId       ClassDesc
    4           ----  
    2           ----
4

3 回答 3

0

使用分组依据

  SELECT classID, ClassDescription FROM  
     (SELECT classID, ClassDescription, COUNT(1) cnt FROM  mytable GROUP
      BY classID, ClassDescription) AS A
            ORDER BY cnt DESC

或者

   SELECT classID, ClassDescription FROM  <table> GROUP BY classID, ClassDescription
ORDER BY COUNT(1) DESC
于 2013-05-09T05:41:09.497 回答
0

试试这个:

SELECT ClassId, COUNT(ClassDesc) AS ClassDesc
FROM MyTable
GROUP BY ClassId
ORDER BY COUNT(ClassDesc) DESC;

输出:

╔═════════╦═══════════╗
║ CLASSID ║ CLASSDESC ║
╠═════════╬═══════════╣
║       4 ║         5 ║
║       2 ║         3 ║
╚═════════╩═══════════╝

看到这个 SQLFiddle

于 2013-05-09T05:45:22.667 回答
0

你的问题标题就是你的答案,你只需要付出一些努力。

您想尝试以下方法:

declare @temp  table
(
classid int,
classdesc varchar(10)
)

insert into @temp
select 4, 'test'
union all
select 4, 'test1'
union all
select 4, 'test2'
union all
select 4, 'test 3'
union all
select 4, 'test 4'
union
select 2, 'test'
union
select 2, 'test 2'

select classid, count(*) classcount
from @temp
group by classid
order by classcount desc

我希望它有帮助!

于 2013-05-09T05:49:25.987 回答