<form id="fbxrn"><thead id="fbxrn"></thead></form>

      您現在的位置是:首頁 > 學無止境 > PHPPHP

      PHP+Mysql實現類似excel的數據透視表功能

      小郭2021-08-03 19:08:38PHP2316人已圍觀

      簡介Mysql中數據分組和數據透視表很像,MySql中的數據分組大家應該都很熟悉了,用的就是 group by。數據透視表是作為一個數據分析師最基本,...

      Mysql中數據分組和數據透視表很像,MySql中的數據分組大家應該都很熟悉了,用的就是 group by。數據透視表是作為一個數據分析師最基本,也是使用頻率最高的一個功能了,我們可以把明細數據從數據庫導出來,然后在 Excel 里面做透視表,也可以直接在數據庫里面做透視表,然后將透視結果進行導出。這篇我們來看看MySql中的數據透視表怎么做。


      我們還是先看看什么是透視表,其實透視表的核心就是按照行列同時分組,然后對分組后的值進行某種匯總運算。


      image.png

      現在有這么一張表 t,存儲的字段如下:

      orderid   price   date       area
      S001      10      2019/1/1   A區
      S002      20      2019/1/1   B區
      S003      30      2019/1/1   C區
      S004      40      2019/1/2   A區
      S005      10      2019/1/2   B區
      S006      20      2019/1/2   C區
      S007      30      2019/1/3   A區
      S008      40      2019/1/3   C區


      現在我們想看一下每個區域每天的訂單量,就是下表這個樣子,我們該怎么做呢?

      image.png

      如果要是在 Excel 中做的話就很簡單,直接做一個透視表就ok了,把 date 拖到行那個框,將 area 拖到列那個框,將 orderid 拖到值那個框,然后對 orderid 進行計數運算即可。


      在Mysql中,如果我們只是看每一天的訂單量的話是不是只需要直接按照成交日期進行 group by 就行,Sql 語句如下:

      select
          date
          ,count(orderid)
      from
          t
      group by date


      現在我們想看一下每個區域每天的一個成交情況,那是不是在上面代碼的基礎上再加一個用來判斷區域的一個條件,就可以得出每個區域的情況了。

      select
          date
          ,count(case when area = "A區" then orderid end) as "A區"
          ,count(case when area = "B區" then orderid end) as "B區"
          ,count(case when area = "C區" then orderid end) as "C區"
      from
          t
      group by date


      最后結果如下:


               A區  B區  C區

      2019/1/1  1   1    1

      2019/1/2  1   1    0

      2019/1/3  1   1    1


      當然了,聚合函數不止可以用 count,還可以用別的聚合函數,比如說,我們想看一下每個區域每一天的營業額,就是所有訂單的 price 相加。Sql 代碼如下:

      select
          ,date
          ,sum(case when area = "A區" then price else 0 end) as "A區"
          ,sum(case when area = "B區" then price else 0  end) as "B區"
          ,sum(case when area = "C區" then price else 0  end) as "C區"
      from
          t
      group by date


      最后結果如下:


                A區  B區  C區

      2019/1/1  10   20   30

      2019/1/2  40   10   20

      2019/1/3  30   0    40


      以上就是PHP+Mysql實現類似excel的數據透視表功能的全部內容!


      小郭博客

      標簽云 更多

      高清性欧美暴力猛交BD_东北偷拍厕所XXXXX_国产+成+人+亚洲欧洲
      關閉
      QQ 微信 支付寶掃一掃打賞