posts - 89,  comments - 98,  trackbacks - 0
          1,現有表bill和表payment結構如下,兩表通過pay_id關聯:
          bill表――bill_id是帳單標識,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
          其中每行表表示一個季度的數據。

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

          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出發,可達到的目的地(包括間接方式)。

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

          不錯嗎!
          CSDN上的經典問題阿!
          scmail81 發表于 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 發表于 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 發表于 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 發表于 2006-2-12 15:48:20

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

          不是吧?有這么多公司用??!
          gerrylc 發表于 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 發表于 2006-2-13 14:04:48

          看過了~~
          mm2love2zz 發表于 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 發表于 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 水煮三國 閱讀(4321) 評論(5)  編輯  收藏 所屬分類: Database

          FeedBack:
          # re: SQL 經典面試題集
          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';  回復  更多評論
            
          # re: SQL 經典面試題集
          2009-02-17 17:24 | 暢暢暢
          select distinct b1.目的地 as A能到達的目的地 from B b1,(select 目的地 from B where 起始地='A') as b2 where b1.起始地=b2.目的地 or b1.起始地='A' order by b1.目的地;  回復  更多評論
            
          # re: SQL 經典面試題集
          2010-09-02 16:38 | David Liu
          不錯,謝謝了  回復  更多評論
            
          # re: SQL 經典面試題集
          2010-09-02 16:40 | David Liu
          1. 創建一個函數
          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)  回復  更多評論
            
          # re: SQL 經典面試題集
          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]
            回復  更多評論
            
          <2009年2月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類(85)

          隨筆檔案(89)

          文章分類(14)

          文章檔案(42)

          收藏夾(37)

          java

          oracle

          Sybase

          搜索

          •  

          積分與排名

          • 積分 - 211140
          • 排名 - 265

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 临安市| 商都县| 清远市| 柘荣县| 米林县| 多伦县| 团风县| 监利县| 万盛区| 都江堰市| 印江| 新野县| 衢州市| 南和县| 全州县| 白城市| 阿鲁科尔沁旗| 灵宝市| 昆山市| 隆德县| 遂川县| 布尔津县| 大港区| 湖南省| 莒南县| 青海省| 左权县| 龙南县| 延津县| 理塘县| 凤庆县| 金堂县| 德令哈市| 黔东| 元江| 云阳县| 宜城市| 建湖县| 西吉县| 定安县| 黄冈市|