多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > MYSQL API之 WITH ROLLUP

MYSQL API之 WITH ROLLUP

來源:程序員人生   發布時間:2015-01-21 09:06:40 閱讀次數:3421次

GROUP BY子句允許1個將額外行添加到簡略輸出端 WITH ROLLUP 修飾符。這些行代表高層(或高聚集)簡略操作。ROLLUP 因此允許你在多層分析的角度回答有關詢問的問題。例如,它可以用來向OLAP (聯機分析處理) 操作提供支持。

假想1個名為sales 的表具有年份、國家、產品及記錄銷售利潤的利潤列:

CREATE TABLE sales

(

    year    INT NOT NULL,

    country VARCHAR(20) NOT NULL,

    product VARCHAR(32) NOT NULL,

    profit  INT

);

可使用這樣的簡單GROUP BY,每一年對表的內容做1次總結:

mysql> SELECT year, SUM(profit) FROM sales GROUP BY year;

+------+-------------+

| year | SUM(profit) |

+------+-------------+

| 2000 |        4525 |

| 2001 |        3010 |

+------+-------------+

這個輸出結果顯示了每一年的總利潤, 但如果你也想肯定所有年份的總利潤,你必須自己累加每一年的單個值或運行1個加法詢問。

或你可使用 ROLLUP, 它能用1個詢問提供雙層分析。將1個 WITH ROLLUP修飾符添加到GROUP BY 語句,使詢問產生另外一行結果,該行顯示了所有年份的總價值:

mysql> SELECT year, SUM(profit) FROM sales GROUP BY year WITH ROLLUP;

+------+-------------+

| year | SUM(profit) |

+------+-------------+

| 2000 |        4525 |

| 2001 |        3010 |

| NULL |        7535 |

+------+-------------+

總計高聚集行被年份列中的NULL值標出。

當有多重 GROUP BY 列時,ROLLUP產生的效果更加復雜。這時候,每次在除最后1個分類列以外的任何列出現1個 “break” (值的改變) ,則問訊會產生1個高聚集累計行。

例如,在沒有 ROLLUP的情況下,1個以年、國家和產品為基礎的關于 sales 表的1覽表可能以下所示:

mysql> SELECT year, country, product, SUM(profit)

    -> FROM sales

    -> GROUP BY year, country, product;

+------+---------+------------+-------------+

| year | country | product    | SUM(profit) |

+------+---------+------------+-------------+

| 2000 | Finland | Computer   |        1500 |

| 2000 | Finland | Phone      |         100 |

| 2000 | India   | Calculator |         150 |

| 2000 | India   | Computer   |        1200 |

| 2000 | USA     | Calculator |          75 |

| 2000 | USA     | Computer   |        1500 |

| 2001 | Finland | Phone      |          10 |

| 2001 | USA     | Calculator |          50 |

| 2001 | USA     | Computer   |        2700 |

| 2001 | USA     | TV         |         250 |

+------+---------+------------+-------------+

表示總值的輸出結果僅位于年/國家/產品的分析級別。當添加了 ROLLUP后, 詢問會產生1些額外的行:

mysql> SELECT year, country, product, SUM(profit)

    -> FROM sales

    -> GROUP BY year, country, product WITH ROLLUP;

+------+---------+------------+-------------+

| year | country | product    | SUM(profit) |

+------+---------+------------+-------------+

| 2000 | Finland | Computer   |        1500 |

| 2000 | Finland | Phone      |         100 |

| 2000 | Finland | NULL       |        1600 |

| 2000 | India   | Calculator |         150 |

| 2000 | India   | Computer   |        1200 |

| 2000 | India   | NULL       |        1350 |

| 2000 | USA     | Calculator |          75 |

| 2000 | USA     | Computer   |        1500 |

| 2000 | USA     | NULL       |        1575 |

| 2000 | NULL    | NULL       |        4525 |

| 2001 | Finland | Phone      |          10 |

| 2001 | Finland | NULL       |          10 |

| 2001 | USA     | Calculator |          50 |

| 2001 | USA     | Computer   |        2700 |

| 2001 | USA     | TV         |         250 |

| 2001 | USA     | NULL       |        3000 |

| 2001 | NULL    | NULL       |        3010 |

| NULL | NULL    | NULL       |        7535 |

+------+---------+------------+-------------+

對這個詢問, 添加ROLLUP 子句使村輸出結果包括了4層分析的簡略信息,而不只是1個下面是怎樣解釋  ROLLUP輸出:

  • 1組給定的年份和國家的每組產品行后面, 會產生1個額外的總計行, 顯示所有產品的總值。這些即將產品列設置為 NULL。
  • 1組給定年份的行后面,會產生1個額外的總計行,顯示所有國家和產品的總值。這些即將國家和產品列設置為  NULL。
  • 最后, 在所有其它行后面,會產生1個額外的總計列,顯示所有年份、國家及產品的總值。 這1即將年份、國家和產品列設置為 NULL。

使用ROLLUP 時的其它注意事項

以下各項列出了1些MySQL履行ROLLUP的特殊狀態: 

當你使用 ROLLUP時, 你不能同時使用 ORDER BY子句進行結果排序。換言之, ROLLUP 和ORDER BY 是相互排擠的。但是,你仍可以對排序進行1些控制。在 MySQL中, GROUP BY 可以對結果進行排序,而且你可以在GROUP BY列表指定的列中使用明確的 ASC和DESC關鍵詞,從而對個別列進行排序。 (不論如何排序被ROLLUP添加的較高級別的總計行仍出現在它們被計算出的行后面)。  

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品视频白浆免费视频 | 天堂在线观看视频 | 福利片国产 | 在线观看日本www | 欧美另类xxx| 国产日韩一区 | 顶级欧美做受xxx000 | 国产精品性 | 久久久精品成人免费看 | 极品丝袜高跟91极品系列 | 国产成人性色视频 | 一区二区三区在线播放视频 | 国产丝袜福利视频在线播放 | 精品日韩欧美一区二区三区在线播放 | 国产三级精品三级在线观看 | 精品亚洲福利一区二区 | 国产成人精品在视频 | 国产精品任我爽爆在线播放66 | 色综合久久综合欧美综合图片 | 国产亚洲精品一区二区在线观看 | 亚洲精品天堂在线观看 | 影音先锋色天使 | 91综合精品网站久久 | 欧美99热 | 波多野吉衣在线多野结衣 | 久久成人国产精品二三区 | 国产欧美日韩在线人成aaaa | 日本乱人伦片中文字幕三区 | 中文字幕天堂 | 久久精品一区二区三区资源网 | 第一精品福利 | 久久99国产精一区二区三区! | 国产乱通伦| 一级做a爰片性色毛片新版的 | 成人午夜又粗又硬有大 | 日韩精品久久一区二区三区 | 视频一区视频二区在线观看 | 在线日韩麻豆一区 | 偷拍区自拍区 | 碰碰久久 | 久久国产精品最新一区 |