</p> 通过:& ?0 |/ {0 J1 W9 n# Z! m
--) L2 C9 ~( x& |: c- p. S' N
select * from" ~1 p% ?: e4 i1 X! u
(6 H7 r0 I# ^; Z: |
select name,class,s,rank()over (partition by class order by s desc) mm from t2
: l5 {2 o! I% V7 z )
4 T% C* I" [* Y: S1 l where mm=1% `+ I% s% s% Z$ V! F' E) X
--
) x- f9 }$ ^3 _9 f: w' E 得到结果:7 H( i, d$ v* `5 P7 _
NAME CLASS S MM7 w# a; w5 N$ r; `
----- ----- ---------------------- ----------------------( {" Y3 m6 k5 B, }! Y% r0 r
dss 1 95 1
& i" F, `/ {1 Z# @) d9 I' g" z( a2 E gds 2 92 11 w" C3 D, ]% @2 C
gf 3 99 1
% J$ p# h( `3 p ddd 3 99 1. w! l! @3 Y3 U% S! k, q6 |
注意:
* M; k% x% c+ I$ X- t 1.在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果
j5 `4 s& x, @4 Z4 {- L0 R' {# U 2.rank()和dense_rank()的区别是:0 w, _8 I- R* X! n7 i) H4 j) v
--rank()是跳跃排序,有两个第二名时接下来就是第四名! p" t$ n5 R' G2 z9 u8 O7 t/ F! V
--dense_rank()l是连续排序,有两个第二名时仍然跟着第三名
6 O+ x! }1 k r- X' u, H3 N8 _ 3.分类统计 (并显示信息), t: s" F8 r x: p" j3 ]& s5 `/ o
A B C- ~: |" @3 `+ L, a
-- -- ----------------------
( Z2 B$ K# K: o# |, `6 w m a 2$ Z0 N* |5 E: H; E0 m1 [! i
n a 3) L# x; L! T1 j/ n7 [: p
m a 2* Q' r X0 K8 Z$ m( }, z/ c( }$ I- `
n b 2" P/ z. b1 j- A6 ~$ h* @
n b 1
) N4 O, o: U6 h% T x b 3
% I" p2 Q, F* d8 F; R- ~( @# `3 [ x b 2& z; m3 d0 W, M; R# O. H; q8 G
x b 4
2 p5 P% T9 d ?. m: ^4 j3 C G h b 34 q& V8 `7 Y; F/ b6 E& ~* n) N
select a,c,sum(c)over (partition by a) from t2
, F; V, ~- D# _* }' q( J8 ^ 得到结果:
' d2 b* O [$ D; E; J A B C SUM(C)OVER (PARTITIONBYA)
" |: C* m6 M7 q$ _* ~2 J9 s+ n/ T2 C# h* O4 G1 m" g: I
-- -- ------- ------------------------ |