成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解MySQL數據庫累積聚合原理與用法實例分析

數據庫 MySQL
今天主要介紹一下mysql累積聚合原理與用法。下面,我們一起來看看吧。

今天主要介紹一下mysql累積聚合原理與用法。下面,我們一起來看看吧~

[[311690]]

累積聚會

累積聚合為聚合從序列內第一個元素到當前元素的數據,如為每個員工返回每月開始到現在累積的訂單數量和平均訂單數量。

行號問題有兩個解決方案,分別是為使用子查詢和使用連接。子查詢的方法通常比較直觀,可讀性強。但是在要求進行聚合時,子查詢需要為每個聚合掃描一次數據,而連接方法通常只需要掃描一次就可以得到結果。

下面的查詢使用連接來得到結果

  1. SELECTa.empid,a.ordermonth,a.qty AS thismonth,SUM(b.qty) AS total,CAST(AVG(b.qty) AS DECIMAL(5,2)) AS avgFROM emporders a  INNER JOIN emporders bON a.empid=b.empidAND b.ordermonth <= a.ordermonth  GROUP BY a.empid,a.ordermonth,a.qtyORDER BY a.empid,a.ordermonth 

如果只是查詢2015年的累積訂單,可以加上以where條件

  1. WHERE DATE_FORMAT(a.ordermonth,'%Y')='2015' AND DATE_FORMAT(b.ordermonth,'%Y')='2015' 

運行結果如下

詳解mysql數據庫累積聚合原理與用法實例分析

此外可能還需要篩選數據,例如只需要返回每個員工到達某一目標之前每月訂單的情況。這里假設統計每個員工的合計訂單數量達到1000之前的累積情況。

這里可以使用HAVING過濾器來完成查詢

  1. SELECT a.empid, a.ordermonth,a.qty AS thismonth, SUM(b.qty) AS total, CAST(AVG(b.qty) AS DECIMAL(5,2)) AS avgFROM emporders aINNER JOIN emporders b  ON a.empid=b.empid  AND b.ordermonth <= a.ordermonthWHERE DATE_FORMAT(a.ordermonth,'%Y')='2015' AND DATE_FORMAT(b.ordermonth,'%Y')='2015'GROUP BY a.empid,a.ordermonth,a.qtyHAVING total<1000ORDER BY a.empid,a.ordermonth 

這里并沒有統計到達到1000時該月的情況,如果要進行統計,則情況又有點復雜。如果指定了total <= 1000,則只有該月訂單數量正好為1000才進行統計,否則不會對該月進行統計。因此這個問題的過濾,可以從另外一個方面來考慮。當累積累積訂單小于1000時,累積訂單與上個月的訂單之差是小于1000的,同時也能對第一個訂單數量超過1000的月份進行統計。故該解決方案的SQL語句如下

  1. SELECT a.empid, a.ordermonth,a.qty AS thismonth, SUM(b.qty) AS total, CAST(AVG(b.qty) AS DECIMAL(5,2)) AS avgFROM emporders aINNER JOIN emporders b  ON a.empid=b.empid  AND b.ordermonth <= a.ordermonthWHERE DATE_FORMAT(a.ordermonth,'%Y')='2015' AND DATE_FORMAT(b.ordermonth,'%Y')='2015'GROUP BY a.empid,a.ordermonth,a.qtyHAVING total-a.qty < 1000ORDER BY a.empid,a.ordermonth 

運行結果如下

詳解mysql數據庫累積聚合原理與用法實例分析

如果只想返回達到累積訂單數為1000的當月數據,不返回之前的月份,則可以對上述SQL語句

進一步過濾,再添加累積訂單數量大于等于1000的條件。該問題的SQL語句如下,

  1. SELECT a.empid, a.ordermonth,a.qty AS thismonth, SUM(b.qty) AS total, CAST(AVG(b.qty) AS DECIMAL(5,2)) AS avgFROM emporders aINNER JOIN emporders b  ON a.empid=b.empid  AND b.ordermonth <= a.ordermonthWHERE DATE_FORMAT(a.ordermonth,'%Y')='2015' AND DATE_FORMAT(b.ordermonth,'%Y')='2015'GROUP BY a.empid,a.ordermonth,a.qtyHAVING total-a.qty < 1000 AND total >= 1000ORDER BY a.empid,a.ordermonth 

運行結果如下

詳解mysql數據庫累積聚合原理與用法實例分析

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2009-12-31 11:10:01

2021-02-17 13:52:35

數據庫group byMySQL

2010-04-01 09:45:38

NoSQL

2011-05-19 13:25:14

Oracle數據庫

2010-06-02 11:34:23

MySQL 數據庫導入

2019-07-17 10:19:36

MySQL數據庫SQL

2009-09-07 15:25:24

MySQL數據庫互操作Silverlight

2011-03-29 10:47:49

ORACLE數據庫

2010-06-04 10:40:55

AJAX MySQL

2011-06-21 15:11:04

QT 數據庫

2009-07-28 14:16:31

ASP.NET與MyS

2010-03-10 11:29:47

MySQL數據庫性能調

2024-11-19 13:11:19

2011-07-26 18:11:56

iPhone Sqlite 數據庫

2011-08-11 16:55:34

Oracle數據庫AWR

2010-06-01 14:42:55

連接MySQL數據庫

2022-03-29 10:52:08

MySQL數據庫

2025-04-08 06:00:00

2010-06-09 17:36:45

MySQL數據庫同步

2011-07-05 16:08:10

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 自拍偷拍精品 | 91porn在线观看| 毛片一区二区 | 中文字幕第一页在线 | 伊人精品视频 | 日韩三级电影一区二区 | 欧美中文字幕一区二区三区亚洲 | 精品国产鲁一鲁一区二区张丽 | 日韩一区在线观看视频 | 99视频精品 | 国产亚洲欧美在线 | 久久久久久成人 | 毛片视频观看 | 国产清纯白嫩初高生视频在线观看 | 91久久国产综合久久91精品网站 | 国产精品伦一区二区三级视频 | 欧美精品一区二区三区蜜桃视频 | 在线国产一区 | 一区二区国产在线观看 | 久久com| 美女视频一区二区三区 | 日韩欧美三级电影 | 亚洲成色777777在线观看影院 | 欧美视频日韩 | 国产美女精品视频免费观看 | 色综合久 | 日本在线观看网址 | 香蕉一区| www视频在线观看 | 日韩一二区 | 四虎影院久久 | 亚洲精品视频一区 | 国产精品美女在线观看 | 狠狠操狠狠操 | 欧美亚洲国产日韩 | 欧美成人影院 | 久在线 | 久久久精品影院 | 国产精品久久久久久久午夜片 | 精品国产一区二区三区久久久蜜月 | 国产精品美女久久久久久免费 |