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

          payment表――pay_id為付款編號(hào),charge為付款金額,PK:pay_id
          pay_id INTEGER
          charge INTEGER

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

          2、表A定義如下:
          屬性 類(lèi)型
          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
          其中每行表表示一個(gè)季度的數(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
          請(qǐng)用SQL寫(xiě)一段代碼實(shí)現(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
          請(qǐng)用SQL語(yǔ)句或一段代碼寫(xiě)出從A出發(fā),可達(dá)到的目的地(包括間接方式)。

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

          不錯(cuò)嗎!
          CSDN上的經(jīng)典問(wèn)題阿!
          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

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

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

          是啊,我也碰過(guò)第二題
          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

          看過(guò)了~~
          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 水煮三國(guó) 閱讀(4324) 評(píng)論(5)  編輯  收藏 所屬分類(lèi): 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ù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          # re: SQL 經(jīng)典面試題集
          2010-09-02 16:38 | David Liu
          不錯(cuò),謝謝了  回復(fù)  更多評(píng)論
            
          # re: SQL 經(jīng)典面試題集
          2010-09-02 16:40 | David Liu
          1. 創(chuàng)建一個(gè)函數(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ù)  更多評(píng)論
            
          # 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ù)  更多評(píng)論
            
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(4)

          隨筆分類(lèi)(85)

          隨筆檔案(89)

          文章分類(lèi)(14)

          文章檔案(42)

          收藏夾(37)

          java

          oracle

          Sybase

          搜索

          •  

          積分與排名

          • 積分 - 211642
          • 排名 - 266

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 乐昌市| 奉新县| 巫山县| 杭州市| 莒南县| 昌江| 云和县| 临夏县| 梧州市| 中宁县| 喀喇沁旗| 石首市| 水城县| 吴忠市| 奎屯市| 竹北市| 普兰县| 广河县| 体育| 泰安市| 乐山市| 揭西县| 西平县| 锦屏县| 商河县| 昌黎县| 乡宁县| 寿光市| 孝感市| 永兴县| 九寨沟县| 安宁市| 巧家县| 苍山县| 南宁市| 湘阴县| 吕梁市| 枣强县| 南投市| 霍林郭勒市| 盐城市|