posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          部分高級(jí)查詢 sql 拼寫筆記 (mysql)

          Posted on 2008-08-09 22:00 G_G 閱讀(3480) 評(píng)論(9)  編輯  收藏 所屬分類: Database
          參考:http://www.programbbs.com/bbs/view25-12320-1.htm
          但上面的 一些sql語(yǔ)句 ,有查詢時(shí)間問(wèn)題,在此我已于改正了并希望和大家分享。

          ---------自我感覺(jué) 第四題 很不錯(cuò)!-------------


          ----------------------------------------------------------------------
          第一題(只要重復(fù)的都要?輸出)
          ----------------------------------------------------------------------
          create?table?c?(id?int?);
          insert?into?c?values?(1),(2),(3),(4),(3),(5),(6),(1);
          結(jié)果:
          ????
          select?id?from?c?group?by?id?having?count(id)>1?;
          附加(查詢重復(fù)最多的倒排)
          select?bid,count(bid)?as?cu?from?tb?group?by?bid?having?count(bid)>1??order?by?cu??desc





          ----------------------------------------------------------------------
          第二題(報(bào)表查詢橫向輸出)
          查詢后的結(jié)果:
          Create table d(id int,name varchar(50));
          insert into d values(1,'gly');
          insert into d values(2,'ptgly');
          insert into d values(3,'ybgly');
          insert into d values(4,'ptgly');
          insert into d values(5,'ybgly');
          +---+-----+------+
          |gly|ptgly|ybgly | ????
          |---+-----+------+-
          |1? |2??? |2???? |
          +---+-----+------+
          -----------------------------------------------------------------------
          select?
          ????
          sum(case?when?name='gly'?then?1?else?0?end?)?as?gly??,
          ????
          sum(case?when?name='ptgly'?then?1?else?0?end?)?as?ptgly??,
          ????
          sum(case?when?name='ybgly'?then?1?else?0?end?)?as?ybgly??
          from?d?;



          第三題
          可以根據(jù)上面 2,4 可以得出 。
          下面我們?cè)敿?xì)說(shuō)下 4題。


          -----------------------------------------------------------------------
          第四題(復(fù)雜組合查詢!)
          create table table_a (No int, No2 int,num double,itime date);
          insert into table_a values
          ???? (1234,567890,33.5,'2004-12-21'),
          ???? (1234,598701,44.8,'2004-11-21'),
          ???? (1234,598701,45.2,'2004-10-01'),
          ???? (1234,567890,66.5,'2004-9-21'),
          ???? (3456,789065,22.5,'2004-10-01'),
          ???? (3456,789065,77.5,'2004-10-27'),
          ???? (3456,678901,48.5,'2004-12-21');
          按月統(tǒng)計(jì)銷售表中貨物的銷售量數(shù)
          查詢結(jié)果如下:
          ? No, No2 ,?? 九月,  十月,十一月,十二月
          1234,567890, 66.5 ,  0 ,  0? ,? 33.5
          1234,598701,? 0?? , 45.2, 44.8, 0
          3456,789065, 0? ,  100,  0? ,  0
          3456,678901, 0 ,??? 0,??? 0? ,? 48.5
          -----------------------------------------------------------------------
          //當(dāng)然也可以 使用mysql 時(shí)間函數(shù) 在軟件編輯時(shí) 你可以輸入 String[] 并根據(jù)數(shù)據(jù)動(dòng)態(tài)拼寫 sql( case部分!! )
          //這個(gè) 例子很好 哦!報(bào)表可以一句sql 得出!

          select?NO,NO2,
          ????
          sum(case??when?itime?like?'2004-%9%'?then?num?else?0?end)?as?9M,
          ????
          sum(case??when?itime?like?'2004-10%'?then?num?else?0?end)?as?10M,
          ????
          sum(case??when?itime?like?'2004-11%'?then?num?else?0?end)?as?11M,
          ????
          sum(case??when?itime?like?'2004-12%'?then?num?else?0?end)?as?12M
          from?table_a?group?by?no,no2?order?by?no,no2?;


          --------------------------------------------------------------
          第五題
          代碼,名稱
          1???? a
          2???? b
          11??? c
          (代碼11表示為1的下級(jí))
          我要通過(guò)一條句子,得出如下結(jié)果:

          代碼,名稱,有無(wú)下級(jí)
          1???? a???? 有
          2???? b???? 無(wú)
          11??? c???? 無(wú)


          Create table TabTest(t_Code varchar(10),t_Name varchar(10));
          insert into TabTest values('1','a');
          insert into TabTest values('2','b');
          insert into TabTest values('11','c');
          --------------------------------------------------------------
          select?tt1.t_Code,tt1.t_name,(?
          ?????
          case?
          ?????????????
          when?exists?(select?1?from?tabtest?tt2?
          ???????????????????????????????????????
          where?tt2.t_code?like?CONCAT(tt1.t_code,'%')?and?
          ??????????????????????????????????????? tt2.t_code?
          <>?tt1.t_code?)??then?'you'?
          ?????????????
          else?'wu'
          ??????
          end?)?as?you_wu
          from?tabtest??tt1?;









          評(píng)論

          # re: 部分高級(jí)查詢 sql 拼寫筆記 (mysql)  回復(fù)  更多評(píng)論   

          2008-08-11 09:08 by 游客
          誤人子弟!

          # re: 部分高級(jí)查詢 sql 拼寫筆記 (mysql)  回復(fù)  更多評(píng)論   

          2008-08-11 09:50 by Skynet
          @游客
          詳細(xì)說(shuō)明下嗎?當(dāng)報(bào)表查詢時(shí)你 用大量硬代碼,去統(tǒng)計(jì)數(shù)據(jù)?
          這種sql還是會(huì)的好

          # re: 部分高級(jí)查詢 sql 拼寫筆記 (mysql)  回復(fù)  更多評(píng)論   

          2008-08-11 14:55 by 游客
          這種sql也叫高級(jí)查詢語(yǔ)句???并且都是死sql代碼,不是誤人子弟是什么?

          # re: 部分高級(jí)查詢 sql 拼寫筆記 (mysql)  回復(fù)  更多評(píng)論   

          2008-08-12 09:08 by Skynet
          @游客
          看來(lái)這位仁兄 意見(jiàn)很深啊 !
          能詳細(xì)點(diǎn)嗎 你上面還只是單純的評(píng)價(jià),有什么好的方法,或高見(jiàn)說(shuō)出來(lái)與大家分享!
          我這就拋磚引玉了 !
          順便我這也好好學(xué)習(xí)學(xué)習(xí)

          # re: 部分高級(jí)查詢 sql 拼寫筆記 (mysql)  回復(fù)  更多評(píng)論   

          2008-08-12 09:12 by Skynet
          死sql代碼 ?這點(diǎn) 我并不贊同 !
          代碼中動(dòng)態(tài)的 生成拼接 sql ,還是第一次聽(tīng)說(shuō) 死sql代碼?難想
          @游客 兄會(huì) 面向?qū)ο髷?shù)據(jù)庫(kù)動(dòng)態(tài)查詢? 這就期待中

          # re: 部分高級(jí)查詢 sql 拼寫筆記 (mysql)  回復(fù)  更多評(píng)論   

          2008-08-14 16:47 by sniperking
          恩確實(shí)在統(tǒng)計(jì)查詢中SQL的技巧很重要呀!省很多事呀

          # re: 部分高級(jí)查詢 sql 拼寫筆記 (mysql)  回復(fù)  更多評(píng)論   

          2008-08-26 11:55 by 冰河快狼
          不要亂罵人,我見(jiàn)過(guò)很多動(dòng)不動(dòng)罵人的人能力其實(shí)并不怎么樣,我覺(jué)得樓主的總結(jié)還是可以的

          # re: 部分高級(jí)查詢 sql 拼寫筆記 (mysql)  回復(fù)  更多評(píng)論   

          2008-12-22 15:21 by 又一個(gè)游客
          不會(huì)寫行轉(zhuǎn)列就多問(wèn)啊,寫的這么垃圾的代碼,暈。

          # re: 部分高級(jí)查詢 sql 拼寫筆記 (mysql)  回復(fù)  更多評(píng)論   

          2012-05-07 16:10 by 老衲用飄柔
          說(shuō)實(shí)話,寫的的的確是差了那么一點(diǎn)點(diǎn)
          主站蜘蛛池模板: 闻喜县| 洛浦县| 余姚市| 曲麻莱县| 昌图县| 故城县| 双流县| 芮城县| 玉山县| 二手房| 于田县| 女性| 乌兰浩特市| 迁西县| 拜城县| 桓仁| 台南市| 榆中县| 偃师市| 罗源县| 娱乐| 临桂县| 二连浩特市| 柳江县| 交城县| 上思县| 沙河市| 屯昌县| 丰台区| 赤壁市| 运城市| 宜城市| 博乐市| 武城县| 华蓥市| 土默特左旗| 咸宁市| 富源县| 澳门| 秦安县| 湟源县|