回答

收藏

计数,排序并选择前5名

技术问答 技术问答 119 人阅读 | 0 人回复 | 2023-09-13

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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则