SQL Server 2012 4 Z- C' U3 h: @. ^) l0 I我们有一张表,像这样:! I" s1 k+ t: h9 O+ O
ticket, type6 x5 j- s8 X# s; d. C/ N6 N
------------------ + o: Y: L3 ]/ h% ~' ]. l1234, hardware! H/ i8 x6 o- y5 ?3 }
1543, software( ^/ w3 V2 R2 w' I) K
8859, network # E9 Q. L5 A6 L4 i: c) p/ d5832, hardware 8 S9 J. g' P/ j' q/ n b8 N4900, hardware* p3 P* X/ p# g. {2 l; J. o8 I0 E" n
8403, software! _/ H# E% l; G1 @
7859, network ' K, F- H$ Q6 p- V4332, telephone 2 A( w, x4 a# t' X4 n7 t4 ]8721, database : i; w# ]! X% r我们的目标是计算每种类型的所有票证(因此,在这种情况下,结果应该是3个硬件,2个软件,2个网络,1个电话和1个数据库票证),并对其进行排序,然后选择前5个结果行。 3 V& E" A% v; K我们正在尝试确定排名前5位的“热门”或最受欢迎的门票类型(以及数量)。 , H2 y X6 S& B$ D6 B我的计算部分已经减少,但不确定如何订购desc并选择前5个。, E* b/ H0 \& _4 T
谢谢!' H. `' w# X; s' O" L( f
' f* ]* }! ^9 p7 J% j/ W 解决方案: $ u& f6 c) x, W2 h 9 N+ |- t5 F7 s7 Z6 g: t
0 o2 L6 _1 c0 C! k
7 z) n3 X2 e+ n; }( B) T! Y( V+ S 在SQL Server中,您可以TOP用来选择一定数量的行以及一个顺序,以获取正确的记录: 6 C; F: }6 B. aselect top 5 type, count(*) Total5 o: E5 _2 i0 d2 i3 V {
from yourtable ) h! X0 v* f( @6 F% e' @group by type1 f# Z8 K1 `1 o& l
order by total desc. g! z, R- l2 w& a
参见带有演示的SQL Fiddle