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

mysql 數(shù)據(jù)匯總與分組

 更新時(shí)間:2021年10月25日 10:29:56   作者:敖毛毛  
這篇文章主要介紹了mysql 數(shù)據(jù)匯總與分組,我們經(jīng)常需要匯總數(shù)據(jù)而不用把它們實(shí)際檢索出來,為此MySQL提供了專門的函數(shù)。使用這些函數(shù),MySQL查詢可用于檢索數(shù)據(jù),以便分析和報(bào)表生成。下面來看看具體例子,需要的朋友可以參考一下

我們經(jīng)常需要匯總數(shù)據(jù)而不用把它們實(shí)際檢索出來,為此MySQL提供了專門的函數(shù)。使用這些函數(shù),MySQL查詢可用于檢索數(shù)據(jù),以便分析和報(bào)表生成。

這種類型的檢索例子有以下幾種:

  • 確定表中行數(shù)(或者滿足某個(gè)條件或包含某個(gè)特定值的行數(shù))。
  • 獲得表中行組的和。
  • 找出表列(或所有行或某些特定的行)的最大值、最小值和平均值

如:

AVG() 返回某列的平均值
COUNT() 返回某列的行數(shù)
MAX() 返回某列的最大值
MIN() 返回某列的最小值
SUM() 返回某列值之和


舉個(gè)例子:

select AVG(prod_price) as avg_price
from products

再比如說:

這里有些函數(shù)里面可以設(shè)置distinct,比如avg,如果設(shè)置了的話,那么會(huì)有一個(gè)這樣的現(xiàn)象。就是只統(tǒng)計(jì)了不同值之間的平均值,具體看業(yè)務(wù)需求。

下面介紹分組數(shù)據(jù):

返回每個(gè)供應(yīng)商提供的產(chǎn)品數(shù)目:

select COUNT(*) as num_prods,vend_id
from products
GROUP BY vend_id

使用group by 需要注意的地方:

  • GROUP BY子句可以包含任意數(shù)目的列。這使得能對分組進(jìn)行嵌套,為數(shù)據(jù)分組提供更細(xì)致的控制
  • 如果在GROUP BY子句中嵌套了分組,數(shù)據(jù)將在最后規(guī)定的分組上進(jìn)行匯總。換句話說,在建立分組時(shí),指定的所有列都一起計(jì)算(所以不能從個(gè)別的列取回?cái)?shù)據(jù))
  • GROUP BY子句中列出的每個(gè)列都必須是檢索列或有效的表達(dá)式(但不能是聚集函數(shù))。如果在SELECT中使用表達(dá)式,則必須在GROUP BY子句中指定相同的表達(dá)式。不能使用別名。
  • 除聚集計(jì)算語句外,SELECT語句中的每個(gè)列都必須在GROUP BY子句中給出。
  • 如果分組列中具有NULL值,則NULL將作為一個(gè)分組返回。如果列中有多行NULL值,它們將分為一組。
  • GROUP BY子句必須出現(xiàn)在WHERE子句之后,ORDER BY子句之前。

使用ROLLUP 使用WITH ROLLUP關(guān)鍵字,可以得到每個(gè)分組以
及每個(gè)分組匯總級別(針對每個(gè)分組)的值,

如下所示:

select COUNT(*) as num_prods,vend_id
from products
GROUP BY vend_id with ROLLUP

除了能用GROUP BY分組數(shù)據(jù)外,MySQL還允許過濾分組,規(guī)定包括哪些分組,排除哪些分組。例如,可能想要列出至少有兩個(gè)訂單的所有顧客。為得出這種數(shù)據(jù),必須基于完整的分組而不是個(gè)別的行進(jìn)行過濾。

HAVINGWHERE的差別 這里有另一種理解方法,WHERE在數(shù)據(jù)分組前進(jìn)行過濾,HAVING在數(shù)據(jù)分組后進(jìn)行過濾。這是一個(gè)重要的區(qū)別,WHERE排除的行不包括在分組中。這可能會(huì)改變計(jì)算值,從而影響HAVING子句中基于這些值過濾掉的分組。

select COUNT(*) as num_prods,vend_id
from products
GROUP BY vend_id
HAVING COUNT(*)>2

那么,有沒有在一條語句中同時(shí)使用WHEREHAVING子句的需要呢?事實(shí)上,確實(shí)有。假如想進(jìn)一步過濾上面的語句,使它返回過去12個(gè)月內(nèi)具有兩個(gè)以上訂單的顧客。為達(dá)到這一點(diǎn),可增加一條WHERE子句,過濾出過去12個(gè)月內(nèi)下過的訂單。然后再增加HAVING子句過濾出具有兩個(gè)
以上訂單的分組。

select COUNT(*) as num_prods,vend_id
from products
where prod_price>=10
GROUP BY vend_id

下面介紹一下order by

雖然GROUP BYORDER BY經(jīng)常完成相同的工作,但它們是非常不同的。

這里為什么說group by order by完成相同的工作呢?這是因?yàn)榍懊嫖覀儼l(fā)現(xiàn)沒,就是其實(shí)看起來好像是經(jīng)過了vend_id的排序的。

我們經(jīng)常發(fā)現(xiàn)用GROUP BY分組的數(shù)據(jù)確實(shí)是以分組順序輸出的。但情況并不總是這樣,它并不是SQL規(guī)范所要求的。此外,用戶也可能會(huì)要求以不同于分組的順序排序。僅因?yàn)槟阋阅撤N方式分組數(shù)據(jù)(獲得特定的分組聚集值),并不表示你需要以相同的方式排序輸出。

應(yīng)該提供明確的ORDER BY子句,即使其效果等同于GROUP BY子句也是如此

不要忘記ORDER BY 一般在使用GROUP BY子句時(shí),應(yīng)該也給出ORDER BY子句。這是保證數(shù)據(jù)正確排序的唯一方法。千萬不要僅依賴GROUP BY排序數(shù)據(jù)。

例如:

select COUNT(*) as num_prods,vend_id
from products
where prod_price>=10
GROUP BY vend_id
ORDER BY num_prods


select 語句順序:

SELECT 要返回的列或表達(dá)式 是
FROM 從中檢索數(shù)據(jù)的表 僅在從表選擇數(shù)據(jù)時(shí)使用
WHERE 行級過濾 否
GROUP BY 分組說明 僅在按組計(jì)算聚集時(shí)使用
HAVING 組級過濾 否
ORDER BY 輸出排序順序 否
LIMIT 要檢索的行數(shù) 否

到此這篇關(guān)于mysql 數(shù)據(jù)匯總與分組的文章就介紹到這了,更多相關(guān)mysql 分組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • update.where無索引導(dǎo)致MySQL死鎖問題解決

    update.where無索引導(dǎo)致MySQL死鎖問題解決

    這篇文章主要為大家介紹了update.where無索引導(dǎo)致MySQL死鎖問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 簡單實(shí)現(xiàn)MySQL服務(wù)器的優(yōu)化配置方法

    簡單實(shí)現(xiàn)MySQL服務(wù)器的優(yōu)化配置方法

    我們今天主要向大家描述的是MySQL服務(wù)器的優(yōu)化配置的時(shí)機(jī)操作步驟,以及在MySQL服務(wù)器的優(yōu)化配置的的過程中值得我們主義的事項(xiàng)的介紹。
    2011-03-03
  • sql中with?as用法以及with-as性能調(diào)優(yōu)/with用法舉例

    sql中with?as用法以及with-as性能調(diào)優(yōu)/with用法舉例

    SQL中的WITH?AS語法是一種強(qiáng)大的工具,可以簡化復(fù)雜查詢的編寫,提高查詢的可讀性和維護(hù)性,這篇文章主要給大家介紹了關(guān)于sql中with?as用法以及with-as性能調(diào)優(yōu)/with用法的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • MySQL性能優(yōu)化

    MySQL性能優(yōu)化

    MySQL是目前使用最多的開源數(shù)據(jù)庫,但是MySQL數(shù)據(jù)庫的默認(rèn)設(shè)置性能非常的差,僅僅是一個(gè)玩具數(shù)據(jù)庫。因此在產(chǎn)品中使用MySQL數(shù)據(jù)庫必須進(jìn)行必要的優(yōu)化
    2013-02-02
  • Mysql數(shù)據(jù)庫的一些命令

    Mysql數(shù)據(jù)庫的一些命令

    如果你習(xí)慣用 windows 的數(shù)據(jù)庫,也就是在 圖形界面上操作數(shù)據(jù)庫的話,那么當(dāng)你在命令上 操作 mysql 將會(huì)感到陌生,其實(shí)只要你掌握了一些基本命令,還有經(jīng)常使用,熟練起來了, 將會(huì)相當(dāng)方便,而且很快速
    2013-11-11
  • Mysql8.0使用窗口函數(shù)解決排序問題

    Mysql8.0使用窗口函數(shù)解決排序問題

    窗口的概念非常重要,它可以理解為記錄集合,窗口函數(shù)也就是在滿足某種條件的記錄集合上執(zhí)行的特殊函數(shù)。這篇文章主要介紹了Mysql8.0使用窗口函數(shù)解決排序問題,需要的朋友可以參考下
    2020-01-01
  • MySQL Flink Watermark實(shí)現(xiàn)事件時(shí)間處理的關(guān)鍵技術(shù)

    MySQL Flink Watermark實(shí)現(xiàn)事件時(shí)間處理的關(guān)鍵技術(shù)

    Flink Watermark是Flink流處理框架中實(shí)現(xiàn)事件時(shí)間處理的關(guān)鍵技術(shù)之一。它是通過一種機(jī)制來解決數(shù)據(jù)亂序和延遲的問題,使得Flink可以在處理遲到的數(shù)據(jù)時(shí)保證結(jié)果的準(zhǔn)確性。Flink Watermark可以在數(shù)據(jù)流中插入一個(gè)時(shí)間戳,將數(shù)據(jù)流轉(zhuǎn)化為具有時(shí)間維度的數(shù)據(jù)集合
    2023-05-05
  • 深入理解MySQL公共表表達(dá)式

    深入理解MySQL公共表表達(dá)式

    公用表達(dá)式是MySQL8.0的新特性,它是一個(gè)命名的臨時(shí)結(jié)果集,作用范圍是當(dāng)前語句,本文主要介紹了MySQL公共表表達(dá)式使用,感興趣的可以了解一下
    2024-09-09
  • Mysql事物阻塞的實(shí)現(xiàn)

    Mysql事物阻塞的實(shí)現(xiàn)

    本文主要介紹了Mysql事物阻塞的實(shí)現(xiàn),阻塞并不是一件壞事,其是為了確保事務(wù)可以并發(fā)且正常地運(yùn)行,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • MySQL主從同步原理介紹

    MySQL主從同步原理介紹

    這篇文章主要介紹了MySQL主從同步原理介紹,本文講解了主從同步概述、主從同步需求、主從同步過程等內(nèi)容,需要的朋友可以參考下
    2015-07-07

最新評論

巴林左旗| 耒阳市| 西丰县| 阿拉善右旗| 镇平县| 方山县| 闽清县| 昭苏县| 南城县| 申扎县| 吐鲁番市| 洪湖市| 华坪县| 固安县| 张家界市| 喀喇沁旗| 镇赉县| 龙岩市| 祁连县| 剑河县| 克拉玛依市| 柳林县| 永吉县| 宣城市| 土默特左旗| 清镇市| 永定县| 台东县| 遵化市| 河间市| 紫云| 奈曼旗| 通辽市| 井冈山市| 桐柏县| 米林县| 巴林右旗| 昭觉县| 西乌珠穆沁旗| 湖北省| 沙坪坝区|