2017.9.8 關(guān)于case關(guān)鍵字粘驰、Group-Concat 函數(shù)的一些問(wèn)題及補(bǔ)充

分享人:陳孚楠

1. PD中建文件夾述么,若生成在原來(lái)文件夾中,會(huì)導(dǎo)致文件重復(fù)

方法:

  • 建新的文件夾度秘,再加入進(jìn)入
  • 若缺少Tid、Updatetid,可把Modeltable.cs和ModeltableUser.cs兩個(gè)基類文件復(fù)制到新文件夾中

2. 數(shù)據(jù)導(dǎo)出成Excel剑梳,枚舉出錯(cuò),可以用case……then

補(bǔ)充: SQL中CASE關(guān)鍵字的使用

CASE的使用方法

代碼示例

CASE關(guān)鍵字有兩種使用方法阻荒,分別是‘簡(jiǎn)單case函數(shù)’和‘case搜索函數(shù)’

  • 簡(jiǎn)單case函數(shù)
CASE sex 
        WHEN '1' THEN '男' 
        WHEN '2' THEN '女'
ELSE '其他' END
  • case搜索函數(shù)
CASE sex 
          WHEN sex='1' THEN '男' 
          WHEN sex='2' THEN '女'
ELSE '其他' END
分析說(shuō)明
  • 簡(jiǎn)單case函數(shù)是case搜索函數(shù)的真子集

    • 簡(jiǎn)單case函數(shù)的使用方法與一些高級(jí)語(yǔ)言(如:java)中的switch語(yǔ)句相似:CASE給定匹配字段,WHEN給出具體的字段值,如果匹配到后返回THEN值。
    • 簡(jiǎn)單case函數(shù)其實(shí)就是case搜索函數(shù)的‘=’邏輯的實(shí)現(xiàn)羊壹。case搜索函數(shù)可以實(shí)現(xiàn)簡(jiǎn)單case函數(shù)的所有功能,而簡(jiǎn)單case函數(shù)卻不可實(shí)現(xiàn)case搜索函數(shù)的‘=’邏輯以外的功能油猫。
  • case函數(shù)匹配原則

    • case函數(shù)與switch的不同在于case僅返回第一個(gè)匹配到的結(jié)果,而switch則會(huì)在沒(méi)有中斷的情況下繼續(xù)后面的判斷情妖,將會(huì)執(zhí)行所有匹配的結(jié)果。
  • case搜索函數(shù)比簡(jiǎn)單case函數(shù)更加靈活

    • case搜索函數(shù)與簡(jiǎn)單case函數(shù)相比的靈活之處在于可以在WHEN中書寫判斷式电爹。

case關(guān)鍵字的一些妙用

  • 替換

在某些時(shí)候,我們需要在查詢結(jié)果中使用字符串替換掉數(shù)據(jù)庫(kù)中原本存儲(chǔ)的字符串丐箩,如:數(shù)據(jù)庫(kù)中的性別存儲(chǔ)方式是以‘1’表示‘男’、‘0’表示‘女’屎勘。如果不進(jìn)行替換,則查詢結(jié)果中只會(huì)包含‘1’和‘0’概漱,但我們希望能以‘男’和‘女’的形式進(jìn)行展示。此時(shí)我們就可以使用case語(yǔ)句來(lái)進(jìn)行實(shí)現(xiàn):

SELECT 
      name, 
      CASE gender 
            WHEN '1' THEN '男' 
            WHEN '0' THEN '女'
      ELSE '其他' END
FROM
       T_USER

  • 分類

說(shuō)到分類瓤摧,在SQL中應(yīng)該首選GROUP BY。然而GROUP BY也不是萬(wàn)能的夜惭,如果有進(jìn)行范圍分類,就有些力不從心了诈茧,需要與CASE配合才能完成。比如:當(dāng)前用戶表(T_USER)中有100萬(wàn)條數(shù)據(jù)敢会,用戶記錄中有年齡字段(age),我們現(xiàn)在劃分年齡小于18歲的是未成年成鸥昏、大于等于18歲小于40歲的年輕人、大于等于40歲小于60歲的是中年人吏垮、大于等于60歲的是老年人罐旗,現(xiàn)需要統(tǒng)計(jì)各類人群的數(shù)量。

SELECT 
    CASE age 
        WHERE age < 18 THEN '未成年人' 
        WHERE age >= 18 AND age < 40 THEN '年輕人' 
        WEHRE age >= 40 AND age < 60 THEN '中年人' 
        WHERE age >= 60 THEN '老年人'
    ELSE '其他' END '人群類型', 
    COUNT(*) '數(shù)量'
FROM T_USER
GROUP  BY 
    CASE age 
        WHERE age < 18 THEN '未成年人' 
        WHERE age >= 18 AND age < 40 THEN '年輕人' 
        WEHRE age >= 40 AND age < 60 THEN '中年人' 
        WHERE age >= 60 THEN '老年人' 
ELSE '其他' END
  • 降維

這里的降維主要是降低數(shù)據(jù)庫(kù)查詢次數(shù)九秀,我們可以將數(shù)據(jù)庫(kù)的每個(gè)select作為數(shù)據(jù)的一個(gè)維度粘我,維度越高,數(shù)據(jù)庫(kù)服務(wù)器處理該數(shù)據(jù)的資源消耗就越多征字,子查詢就是一個(gè)極度消耗資源的查詢方式。這里就給出一個(gè)減少子查詢的案例匙姜,如:同樣是“分類”欄目下的那個(gè)表(T_USER),人群分類相同搁料,另外說(shuō)明:用戶表中的用戶來(lái)自于國(guó)內(nèi)的不同省(province)。現(xiàn)在需要統(tǒng)計(jì)的是郭计,各省的各類人群的數(shù)量。

SELECT province, 
        SUM( CASE age WHERE age < 18 THEN 1 ELSE 0 END) '未成年人', 
        SUM( CASE age WHERE age >= 18 AND age < 40 THEN 1 ELSE 0 END) '年輕人', 
        SUM( CASE age WHERE age >= 40 AND age < 60 THEN 1 ELSE 0 END) '中年人', 
        SUM( CASE age WHERE age >= 60 THEN 1 ELSE 0 END) '老年人',
FROM T_USER
GROUP BY
         province

3. 統(tǒng)計(jì)方法:Group-Concat 函數(shù)

實(shí)例:

rcv.SelectFrom = @"(SELECT r.Year_Require,
               GROUP_CONCAT(r.`Tid` SEPARATOR ',')AS RequirementTids,c.CourseName,
                SUM(r.Mans)AS Mans,
                SUM(r.Tuition)AS Tuition,SUM(r.TrafficExpense)AS TrafficExpense,
                SUM(r.AccommodationFee)AS AccommodationFee,
                SUM(r.Fees)AS Fees,
                GROUP_CONCAT(r.`Month_Require` SEPARATOR ',')AS Month_Require,
                GROUP_CONCAT(r.`TrainSite` SEPARATOR ',')AS TrainSite,
     r.ApproveMans,m.CourseTypeName,c.CourseCode 
                FROM T_Hr_Tr_Requirement r,T_Course c,T_CourseTypeManage m 
                WHERE r.CourseTid = c.Tid  AND  c.CourseSortTid=m.Tid 
                AND r.Status = 1 AND c.Status = 1 
                AND m.Status = 1 AND r.RequireStatus = 55
                GROUP BY r.Year_Require,r.CourseCode)T";

補(bǔ)充:group_concat()函數(shù)總結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梧乘,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子选调,更是在濱河造成了極大的恐慌,老刑警劉巖仁堪,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件填渠,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡氛什,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門枪眉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人贸铜,你說(shuō)我怎么就攤上這事聂受∫” “怎么了渤早?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鹊杖。 經(jīng)常有香客問(wèn)我,道長(zhǎng)骂蓖,這世上最難降的妖魔是什么积瞒? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任茫孔,我火速辦了婚禮,結(jié)果婚禮上缰贝,老公的妹妹穿的比我還像新娘。我一直安慰自己畔濒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布赞弥。 她就那樣靜靜地躺著,像睡著了一般趣兄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上艇潭,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音暴区,去河邊找鬼。 笑死仙粱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伐割。 我是一名探鬼主播刃唤,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼白群,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了帜慢?” 一聲冷哼從身側(cè)響起笼裳,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤躬柬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后允青,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颠锉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年史汗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淹办。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖怜森,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情副硅,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布恐疲,位于F島的核電站,受9級(jí)特大地震影響培己,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜省咨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧笤受,春花似錦、人聲如沸箩兽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至芳绩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妥色,已是汗流浹背遏片。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留吮便,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓髓需,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親僚匆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容