最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中使用Union—多表合并之行合并

 更新時間:2023年07月03日 11:20:51   作者:榴蓮小冰棍  
這篇文章主要介紹了Mysql中使用Union—多表合并之行合并,如果我們需要將兩個select語句的結果作為一個整體顯示出來,我們就需要用到union或者union all關鍵字,union(或稱為聯(lián)合)的作用是將多個結果合并在一起顯示出來,需要的朋友可以參考下

Union (all)語句格式

select 列名    from 表A

union (all)

select 列名    from 表B

注意事項:

  • 合并的表的列數(shù)必須是一致的,也就是表的列數(shù)要相同
  • union 與union all 對兩個查詢結果合并的時候,如果結果有重復,union 會把重復的值刪除;
  • union 與union all不能與order by同時使用,如果要對結果進行排序,可以用子查詢

案例解析

統(tǒng)計20170703—20170709周內(nèi)每天及本周累計銷售金額、訂單量、會員數(shù)、訂單占比

  • 統(tǒng)計時間段內(nèi)每天的累計銷售金額、訂單量、會員數(shù)
  • 統(tǒng)計本周累計銷售金額、訂單量、會員數(shù)
  • 訂單占比
  • union合并表
  • 對比 union all合并表——因為沒有重復數(shù)據(jù),所以兩表合并結果一樣
-- 1、統(tǒng)計時間段內(nèi)每天的累計銷售金額、訂單量、會員數(shù)
SELECT DATE_FORMAT(dimDateID,'%W') as week_1      /*把時間轉化為星期模式*/
      ,SUM(AMT) as money
      ,COUNT(DISTINCT salesID) as num_order       /*一個會員一周可以下多單,所以要統(tǒng)計會員數(shù),需要去重*/
      ,COUNT(DISTINCT dimMemberID) num_member
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by DATE_FORMAT(dimDateID,'%W') ;
-- 2、統(tǒng)計本周累計銷售金額、訂單量、會員數(shù)
SELECT SUM(AMT) as total_money
      ,COUNT(DISTINCT salesID) as total_num_order
      ,COUNT(DISTINCT dimMemberID) total_num_member
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0;
-- 3、訂單占比
SELECT DATE_FORMAT(dimDateID,'%W') AS week_1
      ,CONCAT(ROUND( COUNT(DISTINCT salesID)/(SELECT COUNT(DISTINCT salesID)
                                FROM dw.fct_sales
                                where dimDateID between '20170703' and '20170709'
                                and dimMemberID <>0),4)*100,'%') as order_rate
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by DATE_FORMAT(dimDateID,'%W') ;
-- 4、union合并表
SELECT DATE_FORMAT(dimDateID,'%W') AS week_1 
      ,SUM(AMT) as money
      ,COUNT(DISTINCT salesID) as num_order
      ,COUNT(DISTINCT dimMemberID) num_member
      ,CONCAT(ROUND( COUNT(DISTINCT salesID)/(
       SELECT COUNT(DISTINCT salesID)
       FROM dw.fct_sales
       where dimDateID between '20170703' and '20170709'
       and dimMemberID <>0),4)*100,'%') as order_rate
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by DATE_FORMAT(dimDateID,'%W')
UNION 
SELECT week(dimDateID,1)               /*為了保證列數(shù)一樣,week返回日期為一年中的第幾周 weel(date,1):從周一開始為第一天*/
      ,SUM(AMT) as total_money
      ,COUNT(DISTINCT salesID) as total_num_order
      ,COUNT(DISTINCT dimMemberID) total_num_member
      ,'100%' as total                 /*為確保列數(shù)一樣*/
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by week(dimDateID,1);            /*出現(xiàn)匯總函數(shù)需要進行分組*/
-- 5、對比 union all合并表——因為沒有重復數(shù)據(jù),所以兩表合并結果一樣
SELECT DATE_FORMAT(dimDateID,'%W') AS week_1 
      ,SUM(AMT) as money
      ,COUNT(DISTINCT salesID) as num_order
      ,COUNT(DISTINCT dimMemberID) num_member
      ,CONCAT(ROUND( COUNT(DISTINCT salesID)/(
       SELECT COUNT(DISTINCT salesID)
       FROM dw.fct_sales
       where dimDateID between '20170703' and '20170709'
       and dimMemberID <>0),4)*100,'%') as order_rate
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by DATE_FORMAT(dimDateID,'%W')
UNION ALL 
SELECT week(dimDateID,1)               /*為了保證列數(shù)一樣,week返回日期為一年中的第幾周 weel(date,1):從周一開始為第一天*/
      ,SUM(AMT) as total_money
      ,COUNT(DISTINCT salesID) as total_num_order
      ,COUNT(DISTINCT dimMemberID) total_num_member
      ,'100%' as total                 /*為確保列數(shù)一樣*/
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by week(dimDateID,1);            /*出現(xiàn)匯總函數(shù)需要進行分組*/
區(qū)分union 和 union all ,利用重復數(shù)據(jù)對比,合并兩個一模一樣的表 
-- union
SELECT DATE_FORMAT(dimDateID,'%W') as week_1      /*把時間轉化為星期模式*/
      ,SUM(AMT) as money
      ,COUNT(DISTINCT salesID) as num_order       /*一個會員一周可以下多單,所以要統(tǒng)計會員數(shù),需要去重*/
      ,COUNT(DISTINCT dimMemberID) num_member
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by DATE_FORMAT(dimDateID,'%W')
UNION 
SELECT DATE_FORMAT(dimDateID,'%W') as week_1      /*把時間轉化為星期模式*/
      ,SUM(AMT) as money
      ,COUNT(DISTINCT salesID) as num_order       /*一個會員一周可以下多單,所以要統(tǒng)計會員數(shù),需要去重*/
      ,COUNT(DISTINCT dimMemberID) num_member
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by DATE_FORMAT(dimDateID,'%W') ;
-- union all
SELECT DATE_FORMAT(dimDateID,'%W') as week_1      /*把時間轉化為星期模式*/
      ,SUM(AMT) as money
      ,COUNT(DISTINCT salesID) as num_order       /*一個會員一周可以下多單,所以要統(tǒng)計會員數(shù),需要去重*/
      ,COUNT(DISTINCT dimMemberID) num_member
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by DATE_FORMAT(dimDateID,'%W')
UNION ALL 
SELECT DATE_FORMAT(dimDateID,'%W') as week_1      /*把時間轉化為星期模式*/
      ,SUM(AMT) as money
      ,COUNT(DISTINCT salesID) as num_order       /*一個會員一周可以下多單,所以要統(tǒng)計會員數(shù),需要去重*/
      ,COUNT(DISTINCT dimMemberID) num_member
FROM dw.fct_sales
where dimDateID between '20170703' and '20170709'
and dimMemberID <>0
group by DATE_FORMAT(dimDateID,'%W') ;
多表合并中的排序問題 order by——把合并后的表作為一個臨時表,再進行排序

注意臨時表需要命名

排序要對新的列名進行排序

SELECT sn.*
FROM (
      SELECT DATE_FORMAT(dimDateID,'%W') as week_1      /*把時間轉化為星期模式*/
            ,SUM(AMT) as money 
            ,COUNT(DISTINCT salesID) as num_order       /*一個會員一周可以下多單,所以要統(tǒng)計會員數(shù),需要去重*/
            ,COUNT(DISTINCT dimMemberID) num_member
      FROM dw.fct_sales
      where dimDateID between '20170703' and '20170709'
      and dimMemberID <>0
      group by DATE_FORMAT(dimDateID,'%W')
      UNION 
      SELECT DATE_FORMAT(dimDateID,'%W') as week_1      /*把時間轉化為星期模式*/
            ,SUM(AMT) as money 
            ,COUNT(DISTINCT salesID) as num_order       /*一個會員一周可以下多單,所以要統(tǒng)計會員數(shù),需要去重*/
            ,COUNT(DISTINCT dimMemberID) num_member
      FROM dw.fct_sales
      where dimDateID between '20170703' and '20170709'
      and dimMemberID <>0
      group by DATE_FORMAT(dimDateID,'%W') ) as sn
order by money desc;                                    /*注意要對money排序,而不是SUM(AMT)*/
-- order by SUM(AMT) desc;                              /*會報錯,需要用臨時表的列名,并且要對臨時表取列名,否則也會報錯*/

到此這篇關于Mysql中使用Union—多表合并之行合并的文章就介紹到這了,更多相關Mysql使用Union行合并內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mysql NULL導致的神坑

    Mysql NULL導致的神坑

    這篇文章主要介紹了Mysql NULL導致的神坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • 淺談mysql 自定義函數(shù)

    淺談mysql 自定義函數(shù)

    本文主要是分析了一下在工作中寫的一個mysql的自定義函數(shù),很簡單,僅僅是希望能對大家理解mysql自定義函數(shù)有所幫助。
    2014-09-09
  • MySQL?DQL從入門到精通

    MySQL?DQL從入門到精通

    通過DQL,我們可以從數(shù)據(jù)庫中檢索出所需的數(shù)據(jù),進行各種復雜的數(shù)據(jù)分析和處理,本文將深入探討MySQL DQL的各個方面,幫助你全面掌握這一重要技能,感興趣的朋友跟隨小編一起看看吧
    2025-06-06
  • MySQL系列之開篇 MySQL關系型數(shù)據(jù)庫基礎概念

    MySQL系列之開篇 MySQL關系型數(shù)據(jù)庫基礎概念

    數(shù)據(jù)庫是指長期儲存在計算機中的有組織的、可共享的數(shù)據(jù)集合,數(shù)據(jù)具有三大基本特點,永久存儲,有組織,可共享,是數(shù)據(jù)庫系統(tǒng)的核心,本文給大家分享MySQL關系型數(shù)據(jù)庫基礎概念,需要的朋友參考下吧
    2021-07-07
  • MySQL視圖簡介及基本操作教程

    MySQL視圖簡介及基本操作教程

    這篇文章主要給大家介紹了關于MySQL視圖簡介及基本操作的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • 詳解MySQL Workbench使用教程

    詳解MySQL Workbench使用教程

    這篇文章主要介紹了詳解MySQL Workbench使用教程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • MySQL中InnoDB存儲引擎的鎖的基本使用教程

    MySQL中InnoDB存儲引擎的鎖的基本使用教程

    這篇文章主要介紹了MySQL中InnoDB存儲引擎的鎖的基本概念,是MySQL入門學習中的基礎知識,需要的朋友可以參考下
    2015-11-11
  • mybatis 模糊查詢的實現(xiàn)方法

    mybatis 模糊查詢的實現(xiàn)方法

    這篇文章主要介紹了mybatis 模糊查詢的實現(xiàn)方法的相關資料,希望通過本文能幫助到大家,讓大家掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • mysql提示got timeout reading communication packets的解決方法

    mysql提示got timeout reading communication packets的解決方法

    今天發(fā)現(xiàn)mysql錯誤日志中出現(xiàn)got timeout reading communication packets,一般情況因為部分頁面生成有問題導致,這里簡單分享一下解決方法
    2019-05-05
  • MySQL特殊函數(shù)使用技巧梳理

    MySQL特殊函數(shù)使用技巧梳理

    MySQL提供了各種特殊函數(shù),它們可以幫助管理者查詢復雜的數(shù)據(jù),資料庫包括字符串函數(shù),數(shù)學函數(shù),日期函數(shù),程序函數(shù)等,下面這篇文章主要給大家介紹了關于MySQL特殊函數(shù)使用技巧的相關資料,需要的朋友可以參考下
    2023-05-05

最新評論

平泉县| 宁国市| 永昌县| 岳普湖县| 东乌珠穆沁旗| 香港 | 金溪县| 奉化市| 全南县| 滁州市| 浏阳市| 莱芜市| 潢川县| 马鞍山市| 枞阳县| 芮城县| 鄂托克旗| 布尔津县| 高邮市| 松原市| 庆阳市| 绥阳县| 三台县| 华容县| 山阳县| 南昌县| 海原县| 偃师市| 赤城县| 揭阳市| 文水县| 宁津县| 芷江| 涪陵区| 乌什县| 旌德县| 宁乡县| 酒泉市| 靖州| 泰来县| 开阳县|