|
|
楼主 |
发表于 2006-2-22 20:33
|
显示全部楼层
1
T2 n4 ^* o! c: p现有表bill和表payment结构如下,两表通过pay_id关联:$ F( l% C- f; n1 b/ N: D2 t. e# U
bill表――bill_id是帐单标识,charge为帐单金额,pay_id为付款编号,PK:bill_id4 S- H) D+ ?# x
bill_id INTEGER
, G1 ]4 ^6 p" a! T) e5 tcharge INTEGER1 E5 X% ~% ?$ ], F, {9 N
pay_id INTEGER
2 V) U* O. k+ ]9 ^& L } M$ S% N: C* P% i1 C
payment表――pay_id为付款编号,charge为付款金额,PK:pay_id
* k: @$ {) e. H& a4 A5 Y4 |) H$ npay_id INTEGER
1 k- H1 Q5 ^6 H, H' }, `charge INTEGER
, m, l. P! f M2 H7 ]5 m5 X/ g. @" y! y0 _- a G3 q
要求更新payment使charge=bill表中同一pay_id的charge之和。
8 t( {8 [6 K) Y8 ]6 x
2 h' W! L5 `5 Q$ }9 x2
$ ~3 v7 U: v' ~$ r/ P起始地 目的地 距离(公里) `! H) Y. I9 h
A B 1000
- E9 X* `7 z1 s9 X9 UA C 1100; p- ~6 L2 C& k5 Z) D( X1 k% W6 Z: C
A D 900, y; c6 {0 S0 k# B. p0 Z5 @; h
A E 4001 r3 x1 Q' `, W; z$ m) u" m) _- Y' ~
B D 300
% h$ p; H1 ^. ^: s6 jD F 600' Y5 m" c2 d6 `% G$ `5 `, j
E A 400( z1 K" F, f7 E
F G 1000
/ U* y; Z- A5 z2 |9 I6 _C B 600: E! K, `9 Q& a: h/ }
请用SQL语句或一段代码写出从A出发,可达到的目的地(包括间接方式)。1 u5 l5 X- ]4 Z. x8 N4 E, \8 \6 j
2 c& A- m( @: Z J3
1 L1 s2 [6 _, w- a/ K/ c0 \表A定义如下:
$ ]/ p n$ W5 I0 O& S3 W: W属性 类型 备注
/ I" j& Q1 P* w5 U0 T( DId Integer PK
) U+ {7 Y [8 @( E- @6 ]Name Varchar(30)
. S+ ~# @# V+ V, x TState char(3)# N) b8 K: w) G7 c2 j
表A中现有1000万条记录,如果客户端要通过分页的方式从表A中取数据,其中每页20条
7 o! C& g8 T( V! T1 \* c8 q4 a0 `$ c记录,有几种方法?描述每种方法如何处理,有什么优缺点?用SQL写出实现代码。
7 f8 b s- w1 G
* B1 U; I% j1 k. l6 t0 u49 l. |3 Q( i) J6 N/ x% p. w
表A定义如下:
# e5 b) q* f3 ^7 t/ c属性 类型
8 O1 S& k) C6 H- d7 \Year Integer3 ?0 ?" Q# s1 h0 S
Quarter Varchar(30)
) G0 ^% B+ q# w( B4 O0 FAmount float1 F8 |3 S* W$ n$ l2 }0 |
- _4 n5 H& j2 P: CYear Quarter Amount/ g- v3 F6 \! c& b8 {" m9 S) G
2000 1 1.1
# g2 I$ x1 b2 \3 I- k1 v, q! X6 l2000 2 1.2# G+ T/ S2 ^2 T* @1 S& S
2000 3 1.3
) i1 \9 }, i4 |9 V9 s1 x" F. b2 j2000 4 1.4, [$ d4 b" I2 e$ {3 k
2001 1 2.1# j' m& Z# g6 L0 H+ N5 Q9 b ^- [
2001 2 2.2
; r+ x" f* @7 l K( s% K2001 3 2.3
# I- r4 U) s' C/ I# d2001 4 2.4) i3 J: v2 H/ d8 V: z# u
其中每行表表示一个季度的数据。
: _' D: p$ I( W' e8 l
, E: c6 z! H; G2 U如果处理表A中的数据,得到如下的结果。
- O G$ i% {7 W/ p" C# Y, pYear Quarter1 Quarter2 Quarter3 Quarter46 l" X; b* [# Y' U" Z/ X
2000 1.1 1.2 1.3 1.4
6 H0 V# \) r7 \/ ?1 S. v2001 2.1 2.2 2.3 2.48 L9 g, m2 q) v S! B7 m; Q
请用SQL写一段代码实现。 |
|