1. 程式人生 > >mysql聚合函式和分組

mysql聚合函式和分組

文章例項的資料表,來自上一篇部落格《mysql簡單查詢》:http://blog.csdn.net/zuiwuyuan/article/details/39349611

一、 聚合函式

聚合函式,也叫做組合函式

求所有資料數
count不統計null ,統計的是記錄數
SELECT COUNT(comm) FROM emp;     #  查詢emp表comm的總數
SELECT COUNT(*) FROM emp;       #  查詢emp錶行記錄的總數
SELECT COUNT(DISTINCT deptno) FROM emp;   #  查詢不重複deptno的記錄總數

求平均數,忽略空值
SELECT AVG(sal) FROM emp;
SELECT AVG(comm) FROM emp;   # 2200/4=550

求和
SELECT SUM(sal) FROM emp;

求最大值
SELECT MAX(sal) FROM emp;

#求最小值
SELECT MIN(sal) FROM emp;

二、 分組

Group by字句的真正作用在於與各種聚合函式配合使用,它用來對查詢出來的資料進行分組
分組的含義是: 把該列具有相同值的多條記錄當成一組記錄處理,最後只輸出一條記錄
分組函式忽略空值
結果集隱式按升序排列,如果需要改變排序方式可以使用order by字句

/**
   GROUP BY 可以根據你的分組條件對資料進行分組, 然後再進行統計
   其實,我們對部門進行分組,然後統計出分組後的聚合值(平均、最大、最小等)
*/
#查詢每個部門的平均工資
SELECT deptno,AVG(sal) FROM emp GROUP BY deptno;

#查詢每個部門的員工數
SELECT deptno,COUNT(*) FROM emp GROUP BY deptno;



查詢每個部門的整體工資情況
如果select語句中的列沒有使用組函式,那麼它就必須出現在group by字句中
而出現在group by字句中的列,不一定出現在select語句中 
SELECT deptno ,AVG(sal),MAX(sal),MIN(sal),SUM(sal),COUNT(1) 
FROM emp
GROUP BY deptno;

# 每個部門每個職位的平均工資
SELECT deptno,job,AVG(sal) FROM emp GROUP BY deptno,job;


三、 限定組的結果
HAVING字句用來對分組後的結果再進行條件過濾

# 查詢部門平均工資大於2000的
# 分組後加條件: 使用having
# where和having都是用來做條件限定的,但是having只能用在group by之後
SELECT deptno ,AVG(sal),MAX(sal),MIN(sal),SUM(sal),COUNT(1) 
FROM emp
# where  AVG(sal)>2000; 此句會報錯,因為在where字句中無法使用分組函式
GROUP BY deptno
HAVING AVG(sal)>2000;


where和having的區別:

   where是在分組前進行條件過濾的
   having字句是在分組後進行條件過濾的
   where字句中不能使用聚合函式
   having字句中可以使用局和函式和一般過濾條件

四: 查詢結果限定

  在select語句最後可以使用limit來限定查詢結果返回的起始記錄和總數量
  select...limit offset_start,row_count;
  offset_start: 第一個返回記錄行的偏移量,預設為0
  row_count: 要返回記錄行的最大數目

SELECT * FROM emp LIMIT 5;    # 檢索前五條記錄
SELECT * FROM emp LIMIT 5,10; # 從第6行開始,記錄行6-15(因為預設是0,所以此處的5只的是第六行記錄)


相關推薦

mysql聚合函式分組

文章例項的資料表,來自上一篇部落格《mysql簡單查詢》:http://blog.csdn.net/zuiwuyuan/article/details/39349611 一、 聚合函式 聚合函式,也叫做組合函式 求所有資料數 count不統計null ,統計的是記錄數SE

HIbernate聚合函式分組查詢(學習筆記)

聚合函式 Group by Having 聚合函式:查詢結果作為long型別返回 Count() 統計符合條件的記錄條數 Avg() 求平均值 Sum() 求和 Max

mysql聚合函式count(1) sum(1)結果返回0NULL

1.count(1) 返回為0 如果所查詢的表或者where條件篩選後得到的結果集為空,則 count(1)返回為 0 如: select count(id) from test; select count(id) from test where id < 0; 返回為NULL 如果所查詢的

MySQL常用發幾個查詢(聚合函式分組等)

今天給大家分享幾個MySQL常用的查詢,廢話不多說,直接上圖 先建立一個數據庫,是從網上爬下來的,在環境linux中開啟MySQL,執行 -- 建立 "京東" 資料庫 create database jing_dong charset=utf8; -- 使用 "京東" 資料庫 use j

MySQL聚合函式、模糊查詢約束

聚合函式 聚合函式也叫組函式,在一個行的集合(一組行)上進行操作,並對每個組給予一個結果. 常用的聚合函式: AVG:求平均值 COUNT:統計行的數量 MAX:求最大值 MIN:求最小值 SUM

08--MySQL自學教程:DQL(資料庫查詢)欄位控制查詢、聚合函式分組查詢、limit(二)

DQL資料庫查詢前四種方法參見: 1.方法概覽 一下查詢使用queryDemo資料庫中的demo1student表格,資訊如下: 2.欄位控制查詢 程式碼演示 -- 5.欄位控制查詢distinct -- 語句含義:去

MySQL聚合函式日期資料型別的使用

》MAX()/MIN()             求最大值/最小值 》AVG()                        返回數值列的平均值》SUM()                       返回數值列的和 》COUNT()                 返回

Django基礎—— 14.聚合查詢分組查詢

分享圖片 技術 基礎 http bubuko png src 查詢 djang Django基礎—— 14.聚合查詢和分組查詢

$Django 聚合函式分組查詢、F,Q查詢、orm欄位以及引數

    一.聚合函式     from django.db.models import Avg,Sum,Max,Min,Count,F,Q   #匯入     # .查詢圖書的總價,平均價,最大

Mysql 聚合函式巢狀使用

目的:Mysql 聚合函式巢狀使用 聚合函式不可以直接巢狀使用,比如: max(count(*)) 但是可以巢狀子查詢使用  eg:  注:後面那個 as 必須要寫 select max(total) from ( select count(*) as to

MySQL 聚合函式

以下是我們經常要用的一些聚合函式,請謹慎使用,注意sql_mode 模式設定對查詢結果的影響,如果sql_mode=' ',那麼:select create_time,test_name,max(moneys) from test_table group by test_name; 查詢不報錯,但可能與預想結

SQL的聚合函式分組、子查詢及組合查詢用法

聚合函式: SQL中提供的聚合函式可以用來統計、求和、求最值等等。 分類: –COUNT:統計行數量 –SUM:獲取單個列的合計值 –AVG:計算某個列的平均值 –MAX:計算列的最大值 –MIN:計算列的最小值 首先,建立資料表如下:

資料庫聚合函式分組函式

Oracle 資料庫中聚合函式有:avg、max、min、count、sum 列出每個部門的資訊以及該部門中僱員的數量 Select d.deptno,d.dname,count(e.ename) from emp e,dept d where d.deptno=e.de

聚合函式常用函式

聚合函式(需要和表配合使用) 函式使用語法:select 函式名(欄位名)。針對數值型別欄位,如int,float,double等 示例:select 函式名(欄位名) as 別名 from 表名。 MAX(欄位名):最大值 MIN(欄位名):最小值 AVG(欄位名

關於group by不使用聚合函式分組情況

- 沒見過group by沒和聚合函式一起使用的 - 不會報錯,新版mysql預設配置可以這樣,如果要像老版之前。可以修改下配置。但是這樣查出來的資料沒有準確性。因為查詢的未分組的列結果是隨機

MySQL聚合函式

資料準備: mysql> CREATE TABLE users(     -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,     -> username VARCHAR(20) NOT NULL,  

MySQL聚合函式Group by理解

今天遇到一個問題是分組統計問題,表結構如下,我們的需求是按小時去聚合統計不同type和count_key的和。 這裡可以用聚合函式: SELECT type,count_key,count,DA

MySQL——聚合函式

內建函式和計算 SQL 允許對錶中的資料進行計算。對此,SQL 有 5 個內建函式,這些函式都對 SELECT 的結果進行操作。 函式名 作用 MAX(column) 返回某列的最低值(有則不會返回NULL,沒有則返回NULL) MIN(co

SQL Server 聚合函式分組學習(group by)

一、SQLServer裡面的常用的五種聚合函式。 1.Sum(和)-—對於NULL值預設為0 2.MAX(最大值)MIN(最小值) 3.AVG (平均值)—不統計空值,例如存在有四個人,但是隻有三個人有成績,平均成績為:總和/3 4.COUNT(數量) --統計所有人分數總和

聚合函式Group by

聚合函式: sql語言中一種特殊的函式:聚合函式,SUM, COUNT, MAX, MIN, AVG等。這些函式和其它函式的根本區別就是它們一般作用在多條記錄上。SELECT SUM(population) FROM COUNTRY 這裡的SUM作用在所有返回記錄的popu