1. 程式人生 > >【Mysql】利用group by附帶having進行聚類查詢

【Mysql】利用group by附帶having進行聚類查詢

聚類查詢所針對的物件是表的其中一列,譬如如下的testtable表,要查出username這一列中,各個項所出現的次數,則用到聚類查詢


顯然,聚類查詢之後,得到的結果必須與id,number這兩列半點關係都沒有。因此,也就是正如上門,所說,聚類查詢所針對的物件是表的其中一列。

聚類查詢往往配合count(*),sum(*),avg(*)等聚類語句,用來對錶進行統計。由於查詢的欄位往往是字串varchar型別,因此統計該字串的數目count(*)這個函式就是出現最多的。

比如,要查詢上面的testtable表,要查出username這一列中,各個項所出現的次數,其SQL語句如下:

SELECT username,count(*) as mount FROM testtable group by username order by mount desc

查詢結果如下:


其中,order by是對查詢的結果進行降序排列,這個沒什麼好說的。

對比起查詢結果,可以發現group by的意思是,把相同項聚集起來,成為一行。再利用count函式統計其出現數目,單獨成為一列。


那麼如果,我不想顯示或者說不想統計少於1的結果那怎麼辦呢?此時你應該在group by後面附帶一條having語句。

比如如下語句,就查詢username這一行出現次數大於2的項:

SELECT username,count(*) as mount FROM testtable group by username having mount>1 order by mount desc


having與group by不是並列關係,having是group by的附屬語句,必須先有group by再有having。

利用group by附帶having進行聚類查詢常常附帶《【Mysql】利用內連線與巢狀查詢實現多表查詢,主鍵、外來鍵的基本概念》(點選開啟連結)多表查詢,查出一些更有深度的結果。

相關推薦

Mysql利用group by附帶having進行查詢

聚類查詢所針對的物件是表的其中一列,譬如如下的testtable表,要查出username這一列中,各個項所出現的次數,則用到聚類查詢 顯然,聚類查詢之後,得到的結果必須與id,number這兩列半點關係都沒有。因此,也就是正如上門,所說,聚類查詢所針對的物件是表的其中一

MySQL利用binlog回滾DML操作

require shell腳本 table 開發人員 date操作 生成 options root flashback 簡介:數據庫運行過程中難免會發生誤操作,特別是在測試環境 開發人員或測試人員有時會誤刪或者更新錯誤某些數據。這時可以用binlog閃回DML操作。 條件:

ODPS利用阿里雲ODPS作業進行圓周率Pi的計算

原理: 1.畫一個正方形,邊長為1CM,在此正方形內繪製一個內接圓。 2.假如我們在此正方形內隨機點一個點,這個點落在圓內的概率是P 3.假如我們隨機足夠多的點,那麼我們的P就無限接近於Pi/4(=圓的面積/正方形的面積) 表設計: 1.隨機落點表(記錄隨機點的位置) 2

iOS利用CocoaPods建立私有庫進行元件化開發

之前使用CocoaPods管理過第三方庫,前面也有翻譯文章介紹過CocoaPods的配置方法,隨著專案越來越大,很多公司會使用CocoaPods進行元件化開發,下面利用一個demo介紹一下。 什麼是庫 先說下什麼是庫,庫分為靜態庫和動態庫兩種: - 1

PANDA利用已有的分割結果進行DTI腦區結構連線分析

PANDA為我們提供了一整套關於DTI影象預處理,fiber tracking,利用fsl進行去顱骨分割操作,基於分割模板的network construction等等操作。 但是由於模板限制,我們目前只能使用以下幾個圖譜進行分割槽形容。為了解決這個問題,我發現可以直接載入

文字用k-means對文字進行

# -*- coding: utf-8 -*- """ Created on Thu Nov 16 10:08:52 2017 @author: li-pc """ import jieba fr

MySQL出現“SELECT list is not in GROUP BY clause and contains xxx”錯誤提示

engine 數據 連接 設置 subst sql_mode xxx and sele 需要設置為 sql_mode=‘NO_ENGINE_SUBSTITUTION‘ 設置方式: 1、MySQL客戶端連接上數據庫。 2、當前操作的數據切換成 mysql 3、執行 SELEC

MySqlGroup By數據分組

根據 round 技術 ack 使用 sele bsp inf span GROUP BY 語句根據一個或多個列對結果集進行分組。 在分組的列上我們可以使用 COUNT, SUM, AVG,等函數。 因為聚合函數通過作用於一組數據而只返回一個單個值, 因此,在SELECT

案例利用innodb_force_recovery 解決MySQL服務器crash無法重啟問題

sock ogre ogr 事務 == format span caused his 一 背景 某一創業的朋友的主機因為磁盤陣列損壞機器crash,重啟MySQL服務時 報如下錯誤: InnoDB: Reading tablespace informatio

MySQL復制利用slave_exec_mode處理復制過程中出現的1062與1032錯誤

cati 事務 thead 組成 .cn 推薦 ren 報錯 引入 背景: ? 今天張師兄在群裏問了主從之間出現1032錯誤後,使用pt-slave-restart跳過後又出現了1062錯誤,該如何快速處理。 問題解析: ? 1032錯誤:主庫傳遞過來的binlog

[MySQL]group byhaving 結合函數 的統計技巧

borde for border style sql effective ble post fec group by 與 having 允許字段使用函數,根據函數運行的結果group by分組或having設置選擇條件; 同時group by 與 having 也允許使用字

sql小坑group by裏用select字段的別名?

報錯 spl tro use tin sql 主表 enc 方法 背景 -- 求每個用戶的擁有的產品數,其中userid需要簡單split出來 SELECT split (id, ‘-‘) [ 0 ] AS userid, c

MySqlOrder By 排序

des 需要 .com utf 字符集 條件 itl sele com 你可以使用任何字段來作為排序的條件,從而返回排序後的查詢結果。 你可以設定多個字段來排序。 你可以使用 ASC 或 DESC 關鍵字來設置查詢結果是按升序或降序排列。 默認情況下,它是按升序排列。 你

MYSQL查詢語句 group byhaving count()講解--玉米都督

    在介紹GROUP BY 和 HAVING 子句前,我們必需先講講sql語言中一種特殊的函式:聚合函式,  例如SUM, COUNT, MAX, AVG等。這些函式和其它函式的根本區別就是它們一般作用在多條記錄上。  SELECT S

WindowsMySQLWindows下MySQL資料庫利用mysqldump定時備份並刪除N天前的備份資料

1.新建.bat檔案 內容如下: rem ******MySQL backup start******** @echo off set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%" if not exist "D:\backup\%Ymd%" m

mysql分組查詢group byhaving

select a.run_id,a.user_id,b.dept_id, count(*) as jishu from flow_run_prcs as a,user as b where a.US

MSSQL注入利用Group by&having猜表名和欄位名

轉自靈魂BLOG!! lcx和劍心等大牛在06年的時候就已經在用這種語法了,而我等小輩到最近才領略到,慚愧慚愧...... 手頭暫時沒有注入點測試,就先以我機器上的MSSQL做實驗吧。 下面的語句我

SQL利用HAVING取眾數和中位數

1. 建立測試表及測試資料CREATE TABLE graduates ( name varchar(255) , income int4(255) ); INSERT INTO gradu

Java利用Gearman進行Mysql到Redis的複製

開始的架構圖已經有寫得非常漂亮的。我這裡就不重新再編輯了。java 版本實現job server和worker從第6點開始,紅色部分是我遇到的一些坑。。。 1, 環境 CentOS 64位, MySQL, Redis, Java mysql安裝通過lnmp進行安裝。

Mysql 利用group by 分組排序

MySql的group by與oracle有所不同,查詢得欄位可以不用寫聚合函式,查詢結果取得是每一組的第一行記錄。 利用上面的特點,可以利用mysql實現一種獨特的排序; 首先先按某個欄位進行order by,然後把有順序的表進行分組,這樣每組的成員都是有順序的,而my