亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

關于Mysql子查詢的三個應用場景

瀏覽:2日期:2023-07-20 19:52:12

應用場景

一個select語句的查詢結果能夠作為另一個語句的輸入值,主要有三種情況,分別為:

1.子查詢可以出現在Where子句中,作為過濾條件

select 列名from 表名where 列 操作符 (select 列名 from 表名)

2.也可以出現在from子句中,作為一個臨時表使用

select 列名from (select 列名 from 表名)

3.能夠出現在select list中,作為一個字段值來返回

select 列名,(select 列名 from 表名)from 表名where 列 操作符?????

注意事項:

子查詢只能有一個字段的情況子查詢在select上面,一定是只能一個字段;如果超過一個字段,代碼會報錯子查詢在where后面,當做一個過濾條件,這個字段也必須有且只有一個可以有多個字段的情況當子查詢在from后面,是可以有多個字段的,因為他就是一張表;注意:子查詢在from后面做臨時表來用,必須給子查詢生成的臨時表取別名,否則會報錯時間型字符,在 where 過濾如果是常量,需要用''; 數字則不需要子查詢中,表是可以不一樣的

???????子查詢在Where中作過濾條件

2017年7月2號統計累計購買金額在100到200的會員,尋找這批會員的消費記錄

先找出當日累計購買金額在100-200之間的會員 用having來篩選用查找出來的會員做過濾條件,查找消費記錄-- 先找出當日累計購買金額在100-200之間的會員SELECT dimMemberID ,SUM(AMT) as moneyFROM dw.fct_saleswhere dimDateID ='20170702'and dimMemberID <> 0group by dimMemberID-- having sum(AMT)>100 and sum(AMT)<200;having money BETWEEN 100 and 200;-- 用查找出來的會員做過濾條件,查找消費記錄SELECT *FROM dw.fct_saleswhere dimDateID = '20170702'and dimMemberID <>0and dimMemberID in ( SELECT dimMemberID-- ,SUM(AMT) as money 子查詢在where后面,當做一個過濾條件,這個字段也必須有且只有一個,所以最后結果要返回過濾條件 FROM dw.fct_sales where dimDateID ='20170702' and dimMemberID <> 0 group by dimMemberID having sum(AMT)>100 and sum(AMT)<200); -- having money BETWEEN 100 and 200 ); 不能直接用命名的列名money,要寫全函數,因為前面語句沒有出現money,所以為了避免報錯,之后盡量寫全函數

子查詢在from中做臨時表

2017年7月2日對每位會員累計購買金額進行分段

統計2017年7月2日每位會員的累計購買金額把第一步統計出來的數據作為臨時表,對統計出來的數據進行分組-- 1、統計2017年7月2日每位會員的累計購買金額SELECT dimMemberID ,SUM(AMT) as money FROM dw.fct_saleswhere dimDateID = '20170702'and dimMemberID <> 0group by dimMemberID ;-- 2、把第一步統計出來的數據作為臨時表,對統計出來的數據進行分段SELECT dimMemberID ,money ,case when money <100 then 'D' when money >=100 and money <500 then 'C' when money >=500 and money <1000 then 'B' when money >=1000 then 'A' else '其它' end as type1FROM (SELECT dimMemberID /*臨時表可以生成多個字段,并不是每個字段都需要用也行*/ ,SUM(AMT) as money FROM dw.fct_sales where dimDateID = '20170702' and dimMemberID <> 0 group by dimMemberID) as sn; /*子查詢在from后面做臨時表來用,必須給這個子查詢生成的臨時表取一個表的別名,否則會報錯*/

子查詢在select作為一個字段來返回

2017年7月2日計算每個會員購買金額,以及每個會員購買金額占總體金額的比

2017年7月2日每個會員購買金額總體金額合并兩個表

注意:在合并時where的條件要寫全,不要遺漏,不然容易出現邏輯錯誤

-- 1、2017年7月2日每個會員購買金額SELECT dimMemberID ,SUM(AMT) as moneyFROM dw.fct_saleswhere dimDateID = '20170702'and dimMemberID <>0 /*去除非會員,即 dimMemberID 為 0 的數據*/group by dimMemberID ;-- 2、總體金額SELECT SUM(AMT) FROM dw.fct_saleswhere dimDateID = '20170702';-- 3、合并兩個表 注意在合并時where的條件要寫全,不要遺漏,不然容易出現邏輯錯誤SELECT dimMemberID ,SUM(AMT) as money ,(SELECT SUM(AMT)/*統計總金額*/FROM dw.fct_saleswhere dimDateID = '20170702'and dimMemberID<>0) as total_money ,CONCAT( /*加上%號*/ ROUND( /*四舍五入保留4位小數,帶%一定要思考保留小數位數*/ SUM(AMT)/(SELECT SUM(AMT) FROM dw.fct_sales where dimDateID = '20170702' and dimMemberID<>0),4)*100,'%')as member_rate /*合并表,統計占比*/FROM dw.fct_saleswhere dimDateID = '20170702'and dimMemberID <>0 /*去除非會員,即 dimMemberID 為 0 的數據*/group by dimMemberID ;

到此這篇關于關于Mysql子查詢的三個應用場景的文章就介紹到這了,更多相關Mysql子查詢應用場景內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 国产高清在线精品免费不卡 | 日本香蕉视频 | 美日韩免费视频 | 中文字幕在线永久在线视频2020 | 日韩精品视频在线播放 | 中文字幕第99页 | 久久亚洲精品无码观看不卡 | 毛片毛片免费看 | 国产一级特黄高清免费大片 | 91亚洲人成手机在线观看 | 欧美日韩在线第一页 | 欧美成人免费午夜影视 | 大尺度做爰床戏呻吟免费观看91 | 色婷婷色99国产综合精品 | 国产麻豆一级在线观看 | 日本不卡在线一区二区三区视频 | 91高清国产经典在线观看 | 毛片一级在线观看 | 手机看片日韩日韩 | 97精品国产综合久久 | 婷婷国产偷v国产偷v亚洲 | 国产精品嫩草免费视频 | 日本一级特级毛片视频 | 免费网站看av片 | 4k岛国精品午夜高清在线观看 | 国产精品真实对白精彩久久 | aaa国产精品 | 国产精品人人爱一区二区白浆 | 亚洲午夜精品国产电影在线观看 | 四虎hk网址| 亚洲免费视频网站 | 国产成人亚洲精品影院 | 青青青国产精品国产精品美女 | 国产欧美精品一区二区三区-老狼 | 欧美日韩成人高清在线播放 | 国产黄页在线观看 | 日韩欧美国产高清在线观看 | 亚洲综合激情九月婷婷 | 国产乱码一区二区三区四区 | 久久被窝电影亚洲爽爽爽 | 99久久综合狠狠综合久久aⅴ |