|
13 w4 x# _/ z2 V, l$ z+ N
现有表bill和表payment结构如下,两表通过pay_id关联:1 Q) s" E. M) z! O- x
bill表――bill_id是帐单标识,charge为帐单金额,pay_id为付款编号,PK:bill_id
! b4 ?; L- e& h; T; \bill_id INTEGER' {6 e6 D; d- e* L. I7 Q
charge INTEGER
) h* {% n& O, ], x! s5 X2 l% \pay_id INTEGER: E9 r; {& @( T3 \- S8 Z- G
) N; v4 X6 |& f W
payment表――pay_id为付款编号,charge为付款金额,PK:pay_id
1 g& K z& Z. Z) r- p$ Y. A- tpay_id INTEGER r& D# T$ J- E! t B8 @8 y$ r
charge INTEGER
& o0 m7 @0 G& X* @' }# d+ R
- Z/ J$ |% g- g% ]3 W$ ]要求更新payment使charge=bill表中同一pay_id的charge之和。
9 }3 A9 j6 S5 V, n: o- Z) F( _0 I. G& f; W
2$ a. l1 k, J- I: G: w" M7 a2 F( o/ s
起始地 目的地 距离(公里)1 H4 x0 Z3 s7 ^% Q
A B 1000; j! w9 T' W# F6 w5 t; k
A C 1100
. n- \9 E, i ]! f' V' D" |* `A D 900
" |9 a+ D; }' H* v0 O! ZA E 400
$ z+ g" t/ K, QB D 300
9 ~" L/ o; @0 z+ O" OD F 600
7 M$ M# o3 J+ t( s+ c" L; UE A 400
( X% P }' E- U3 B4 q' LF G 1000" Z/ \9 f; r$ ~8 ?7 Z: K1 J
C B 600
* D8 l, d3 p9 O1 U2 A1 @请用SQL语句或一段代码写出从A出发,可达到的目的地(包括间接方式)。' Y' P: I7 g, J
; W5 J4 ?7 D: p- U7 W6 z- `5 a33 P4 u# a5 O8 n% w
表A定义如下:' J3 u! x5 \5 J$ q1 h- D7 ~4 V
属性 类型 备注 r' f- M" B7 C, S8 g+ B/ D. U
Id Integer PK
4 `9 G) D0 y! J, e: wName Varchar(30)
' L* r/ S. h. A+ E4 JState char(3)
0 j% M3 s( W1 }+ _0 L8 B表A中现有1000万条记录,如果客户端要通过分页的方式从表A中取数据,其中每页20条5 F5 S* H" M1 d4 T& }+ C9 t
记录,有几种方法?描述每种方法如何处理,有什么优缺点?用SQL写出实现代码。
" o _' u+ | J- a' W8 U" P1 [- x/ O) j+ J7 r* _* V9 o
4
+ d9 R4 {9 _ {; s# q, s6 K; r0 @表A定义如下:- y) M3 |* z$ K( _3 e7 |0 P
属性 类型
) h9 o8 i7 q2 L* IYear Integer/ C: J, j5 U. T3 g4 e% E
Quarter Varchar(30)* d* Z. t) J0 S% P! Y5 F8 _' z9 J
Amount float0 M7 l: ?4 S2 l/ V$ ~
- c& D- }' o% N6 p5 eYear Quarter Amount
9 N# y3 t+ t$ ?) C, C& {0 M, O2000 1 1.1
0 X+ t; D5 D, {0 P9 R7 ]7 O' b2000 2 1.21 z; n: W( ]2 o0 ~9 W
2000 3 1.3 c( S$ t9 x; m9 q& o% P
2000 4 1.4& i( @3 q* M2 @6 u6 o
2001 1 2.1/ ]+ l* H. u; ]$ a7 l
2001 2 2.2& P' F% ^! Q( o7 t6 h
2001 3 2.3" h6 a' q. P; y O7 G, [( N
2001 4 2.49 ~' @- E' e- n
其中每行表表示一个季度的数据。
& q9 W5 U/ ~' Z" l% C" R8 @& b2 v+ V2 w# d& T& C' Q
如果处理表A中的数据,得到如下的结果。9 g' V9 b! q- m
Year Quarter1 Quarter2 Quarter3 Quarter49 c- ~! Z& c+ H# g' w$ n0 k0 o
2000 1.1 1.2 1.3 1.46 S; a" I* E9 y+ i
2001 2.1 2.2 2.3 2.4: O6 s/ R( W e @+ b) h6 ~; U: t/ j
请用SQL写一段代码实现。 |
|