mysql數據庫能否分組查詢(mysql數據庫能否分組查詢)

本文目錄一覽:

mysql進階5:分組查詢

/*語法:

select 分組函數 列(要求出現在group by的後面)

from 表

【where 篩選條件】

group by 分組的列表

[order by 子句]

注意:查詢列表必須特殊,要求是分組函數和group by 後出現的字段

特點:

1.分組查詢中篩選條件分為兩類:

數據源 位置 關鍵字

分組前篩選 原始表 group by子句的前面 where

分組後篩選 分組後的結果集 group by子句的後面 having

1.分組函數做條件肯定是放在having子句中

2.能用分組前篩選的,優先考慮使用分組前篩選

2.group by 子句支持單個字段、多個字段分組(用逗號隔開沒有順序要求)表達式或函數(用的較少)

3.也可以添加排序(放在整個group by子句之後)

*/

count(1),其實就是計算一共有多少符合條件的行。

1並不是表示第一個字段,而是表示一個固定值。

其實就可以想成表中有這麼一個字段,這個字段就是固定值1,count(1),就是計算一共有多少個1.

同理,count(2),也可以,得到的值完全一樣,count(‘x’),count(‘y’)都是可以的。一樣的理解方式。在你這個語句理都可以使用,返回的值完全是一樣的。就是計數。

count(*),執行時會把星號翻譯成字段的具體名字,效果也是一樣的,不過多了一個翻譯的動作,比固定值的方式效率稍微低一些。

MySQL分組、排序

上一篇聚合函數末尾處使用了GROUP BY,但沒有做具體的介紹,這一篇就主要介紹一下GROUP BY的使用方法。順便介紹一下對分組查詢的過濾關鍵詞HAVING的用法。

在MySQL中,GROUP BY關鍵詞可以根據一個或多個字段對查詢結果進行分組,類似於Excel中的數據透視表。可以單獨使用,但一般情況下都是結合聚合函數來使用的。

語法格式如下:

下面演示都是基於這一張簡單的省份對應大區的表格。

【單獨使用GROUP BY】

單獨使用GROUP BY關鍵字時,查詢結果會只顯示每個分組的第一條記錄。

根據省份表裏面的大區進行聚合,查詢全國共分成了幾個大區,SQL語句如下↓

【GROUP BY結合聚合函數】

5個聚合函數上一篇已經詳細介紹了用法,GROUP BY和聚合函數結合使用也是最頻繁的,下面就繼續使用省份表來求每個大區有多少個省份,對應的聚合函數就是COUNT函數,SQL語句如下↓

【GROUP BY結合GROUP_CONCAT】

這還是一個很有用的功能,GROUP_CONCAT() 函數會把每個分組的字段值都合併成一行顯示出來。

下面繼續使用省份表,把每個大區對應的省份放在一行展示,用分號分開,SQL語句如下↓

【GROUP BY結合WITH ROLLUP】

WITH POLLUP關鍵詞用來在所有記錄的最後加上一條記錄,這條記錄是上面所有記錄的總和,SQL語句如下↓

【GROUP BY結合HAVING】

在MySQL中,可以使用HAVING關鍵字對分組後的數據進行過濾。

使用 HAVING 關鍵字的語法格式如下:

HAVING關鍵詞和WHERE關鍵詞都可以用來過濾數據,且HAVING支持WHERE關鍵詞中所有的操作符和語法。但是WHERE和HAVING關鍵字也存在以下幾點差異:

下面篩選一下省份數量在7個及以上的大區,SQL語句如下↓

【GROUP BY結合ORDER BY】

聚合後的數據,一半情況下也是需要進行排序的,通過ORDER BY對聚合查詢結果進行排序,對省份數量按從大到小進行排序,SQL語句如下↓

End

◆ PowerBI開場白

◆ Python高德地圖可視化

◆ Python不規則條形圖

MySQL 怎樣分組查詢

mysql

oracle

中分組、聚合函數的區別!

今天需要這樣一句

sql

:先用

group by

進行分組,然後利用聚合函數

count

或者

sum

進行計算,並顯示

其它的輔助信息。

mysql

環境中,我模擬如下環境:

CREATE TABLE `room` (

`rid` varchar(5) default NULL,

`rname` varchar(5) default NULL,

`pid` int(11) default NULL,

`seq` int(11) NOT NULL auto_increment,

PRIMARY KEY

(`seq`)

) ENGINE=InnoDB DEFAULT

CHARSET=utf8

房間表,

seq

房間入住序號

(主鍵)

rname

為房間名,這裡不考慮第三範式

情景:人住房間,

統計某個房間某個人住的次數

用戶表,客人的信息

CREATE TABLE `user1` (

`ID` int(11) NOT NULL auto_increment,

`USERNAME` varchar(50) default ”,

`PASSWORD` varchar(50) default ”,

PRIMARY KEY

(`ID`)

) ENGINE=InnoDB DEFAULT CHARSET=gbk

Mysql

中語句如下:

select count(u.username)

r.rname

,r.rid,r.pid

from room r,user1 u

where r.pid=u.id

group by r.rid,r.pid

這裡

r.rname

並沒有出現在

group by

子句、聚合函數中,但是

MYSQL

中仍然能夠執行、列

出數據。

但是,在

ORACLE

中,卻不能!

Oracle

環境中:

/*

顯示:

Ora-00979 not a ORDER BY expression

因為:

order by

後邊的

c.channel_code

不在

ORDER BY

子句中

select count(c.channel_name),m.media_name

from channel c,media m

where c.media_code = m.media_code

group by c.media_code,m.media_name

order by

c.channel_code

顯示:

Ora-00979 not a GROUP BY expression

因為:

group by

或者聚合函數中沒有包含

c.channel_name

select count(c.channel_name),m.media_name,

c.channel_name

from channel c,media m

原創文章,作者:HBFT1,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/129287.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HBFT1的頭像HBFT1
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 數據庫第三範式會有刪除插入異常

    如果沒有正確設計數據庫,第三範式可能導致刪除和插入異常。以下是詳細解釋: 一、什麼是第三範式和範式理論? 範式理論是關係數據庫中的一個規範化過程。第三範式是範式理論中的一種常見形式…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的數據庫存儲引擎

    本文將介紹兩款高性能的數據庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • Python怎麼導入數據庫

    Python是一種高級編程語言。它具有簡單、易讀的語法和廣泛的庫,讓它成為一個靈活和強大的工具。Python的數據庫連接類型可以多種多樣,其中包括MySQL、Oracle、Post…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28

發表回復

登錄後才能評論