posts - 89,  comments - 98,  trackbacks - 0
          1,現(xiàn)有表bill和表payment結(jié)構(gòu)如下,兩表通過pay_id關(guān)聯(lián):
          bill表――bill_id是帳單標(biāo)識,charge為帳單金額,pay_id為付款編號,PK:bill_id
          bill_id INTEGER
          charge INTEGER
          pay_id INTEGER

          payment表――pay_id為付款編號,charge為付款金額,PK:pay_id
          pay_id INTEGER
          charge INTEGER

          要求更新payment使charge=bill表中同一pay_id的charge之和。

          2、表A定義如下:
          屬性 類型
          Year Integer
          Quarter Varchar(30)
          Amount float

          Year Quarter Amount
          2000 1 1.1
          2000 2 1.2
          2000 3 1.3
          2000 4 1.4
          2001 1 2.1
          2001 2 2.2
          2001 3 2.3
          2001 4 2.4
          其中每行表表示一個季度的數(shù)據(jù)。

          如果處理表A中的數(shù)據(jù),得到如下的結(jié)果。
          Year Quarter1 Quarter2 Quarter3 Quarter4
          2000 1.1 1.2 1.3 1.4
          2001 2.1 2.2 2.3 2.4
          請用SQL寫一段代碼實現(xiàn)。

          3、有如下信息:
          起始地 目的地 距離(公里)
          A B 1000
          A C 1100
          A D 900
          A E 400
          B D 300
          D F 600
          E A 400
          F G 1000
          C B 600
          請用SQL語句或一段代碼寫出從A出發(fā),可達(dá)到的目的地(包括間接方式)。

          4.表A定義如下:
          屬性 類型 備注
          Id Integer PK
          Name Varchar(30)
          State char(3)
          表A中現(xiàn)有1000萬條記錄,如果客戶端要通過分頁的方式從表A中取數(shù)據(jù),其中每頁20條
          記錄,有幾種方法?描述每種方法如何處理,有什么優(yōu)缺點?用SQL寫出實現(xiàn)代碼。
          scmail81 發(fā)表于 2006-2-12 14:17:25

          不錯嗎!
          CSDN上的經(jīng)典問題阿!
          scmail81 發(fā)表于 2006-2-12 14:27:45

          2.
          create table A
          (
          year int,
          Quarter varchar(30),
          amount float
          )

          insert A select 2000,'1',1.1
          insert A select 2000,'2',1.2
          insert A select 2000,'3',1.3
          insert A select 2000,'4',1.4
          insert A select 2001,'1',2.1
          insert A select 2001,'2',2.2
          insert A select 2001,'3',2.3
          insert A select 2001,'4',2.4

          declare @T_SQL varchar(8000)
          set @T_SQL=''
          select @T_SQL=@T_SQL + ' sum(case when Quarter=''' + T.Quarter + ''' then amount else 0 end) as Quarter' + T.Quarter +','
          from (select Quarter from A group by Quarter) T
          set @T_SQL='select year ,' + left(@T_SQL,len(@T_SQL)-1) + ' from A group by year'
          exec (@T_SQL)
          scmail81 發(fā)表于 2006-2-12 14:46:32

          3.
          create table A
          (
          起始地 varchar(5),
          目的地 varchar(5),
          距離 int
          )

          insert A select 'A','B',1000
          insert A select 'A','C',1100
          insert A select 'A','D',900
          insert A select 'A','E',400
          insert A select 'B','D',300
          insert A select 'D','F',600
          insert A select 'E','A',400
          insert A select 'F','G',1000
          insert A select 'C','B',600

          declare @Q varchar(5)
          declare @T table ( 起始地 varchar(5),目的地 varchar(5),路 varchar(8000),lev int)
          declare @lev int
          set @Q='A'
          set @lev=1
          insert @T select 起始地,目的地,起始地+'->'+目的地 as 路,@lev as lev from A where 起始地=@Q
          while @@rowcount>0
          begin
          set @lev=@lev+1
          insert @T select A.起始地,A.目的地,T.路+'->'+A.目的地 ,@lev as lev from (select * from @T where lev=@lev-1) T,(select * from A where A.目的地 not in (select 起始地 from @T)) A where A.起始地=T.目的地
          end
          select 路 from @T
          scmail81 發(fā)表于 2006-2-12 14:56:03

          1.
          update payment set charge=(select sum(charge) from bill where pay_id=T.pay_id)
          from payment p
          samfeng_2003 發(fā)表于 2006-2-12 15:48:20

          我暈,這是哪個公司的面視題?怎么有那么多公司都用這題來考人啊
          shiqing8899 發(fā)表于 2006-2-12 17:05:36

          不是吧?有這么多公司用啊!
          gerrylc 發(fā)表于 2006-2-13 8:32:02

          是啊,我也碰過第二題
          select year,sum(case Quarter when '1' then Amount else 0 end) as Quarter1,
          Quarter2=sum(case Quarter when '2' then Amount else 0 end),
          Quarter3=sum(case Quarter when '3' then Amount else 0 end),
          Quarter4=sum(case Quarter when '4' then Amount else 0 end),
          Amount=sum(Amount)
          from 表 group by year order by year
          mm2love2zz 發(fā)表于 2006-2-13 14:04:48

          看過了~~
          mm2love2zz 發(fā)表于 2006-2-13 14:17:33

          select year,sum(case Quarter when '1' then Amount end) as Quarter1,
          sum(case Quarter when '2' then Amount end) as Quarter2,
          sum(case Quarter when '3' then Amount end) as Quarter3,
          sum(case Quarter when '4' then Amount end) as Quarter4
          from A order by year group by year
          chenyuandxm 發(fā)表于 2006-2-13 16:59:15

          1、
          select pay_id,charge=sum(charge) into #temp from bill group by pay_id
          update payment set payment.charge=#temp.charge from payment,#temp where payment.pay_id=#temp.pay_id
          posted on 2006-09-19 11:17 水煮三國 閱讀(4324) 評論(5)  編輯  收藏 所屬分類: Database

          FeedBack:
          # re: SQL 經(jīng)典面試題集
          2009-02-17 17:19 | 暢暢暢
          3.
          select distinct b1.目的地 from B b1,(select 目的地 from B where 起始地='A') as b2 where b1.起始地=b2.目的地 or b1.起始地='A';  回復(fù)  更多評論
            
          # re: SQL 經(jīng)典面試題集
          2009-02-17 17:24 | 暢暢暢
          select distinct b1.目的地 as A能到達(dá)的目的地 from B b1,(select 目的地 from B where 起始地='A') as b2 where b1.起始地=b2.目的地 or b1.起始地='A' order by b1.目的地;  回復(fù)  更多評論
            
          # re: SQL 經(jīng)典面試題集
          2010-09-02 16:38 | David Liu
          不錯,謝謝了  回復(fù)  更多評論
            
          # re: SQL 經(jīng)典面試題集
          2010-09-02 16:40 | David Liu
          1. 創(chuàng)建一個函數(shù)
          create FUNCTION GetBillCharge(@pay_id int)
          RETURNS int
          AS
          begin
          declare @returnValue int
          SELECT @returnValue = charge from dbo.bill where bill.pay_id = @pay_id
          return @returnValue
          end

          更新
          update payment
          set change= change + dbo.GetBillCharge(payment.pay_id)  回復(fù)  更多評論
            
          # re: SQL 經(jīng)典面試題集
          2010-09-02 16:41 | David Liu
          2. 答案如下

          select [YEAR],
          sum(case when [Quarter] = 1 then [Amount] else 0 end ) 'Quarter1' ,
          sum(case when [Quarter] = 2 then [Amount] else 0 end ) 'Quarter1',
          sum(case when [Quarter] = 3 then [Amount] else 0 end ) 'Quarter1' ,
          sum(case when [Quarter] = 4 then [Amount] else 0 end ) 'Quarter1'
          from A group by [YEAR]
            回復(fù)  更多評論
            
          <2009年2月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類(85)

          隨筆檔案(89)

          文章分類(14)

          文章檔案(42)

          收藏夾(37)

          java

          oracle

          Sybase

          搜索

          •  

          積分與排名

          • 積分 - 211646
          • 排名 - 266

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阳城县| 民勤县| 浦北县| 景谷| 津市市| 许昌县| 游戏| 延津县| 东辽县| 金塔县| 宁蒗| 巴彦淖尔市| 育儿| 盖州市| 沧州市| 台东市| 镇坪县| 环江| 正宁县| 雷州市| 济南市| 临猗县| 宁蒗| 通城县| 海阳市| 科技| 宁德市| 赣榆县| 象州县| 成武县| 汾阳市| 南昌县| 洛隆县| 尚志市| 贵州省| 奇台县| 油尖旺区| 新巴尔虎左旗| 马尔康县| 周至县| 漾濞|