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

SQL單表查詢的排序、聚合、分組操作

 更新時間:2026年01月06日 09:40:57   作者:啦啦啦0526  
本文主要介紹了SQL單表查詢的排序、聚合、分組等操作,包括排序查詢、聚合函數(shù)和分組查詢的使用方法和示例,最后總結(jié)了SQL查詢的順序書寫和執(zhí)行順序,感興趣的朋友跟隨小編一起看看吧

一、引言

今天主要講一講昨天剩下的排序、聚合、分組等單表查詢的一些操作.

二、單表查詢

1.排序查詢

知識點:

排序查詢關(guān)鍵字: order by

排序查詢基礎格式: select 字段名 from 表名 order by 排序字段名 asc|desc;

asc : 升序(默認) desc: 降序

進階格式: select 字段名 from 表名 order by 排序字段1名 asc|desc , 排序字段2名 asc|desc;

注意: 如果order by后跟多個排序字段,先按照前面的字段排序,如果有相同值的情況再按照后面的排序規(guī)則排序

-- 示例1:查詢所有商品,并按照評分從高到低進行排序

SELECT * FROM products ORDER BY score DESC;

-- 示例2:查詢所有商品,先按照評分從高到低進行排序,評分相同的按照價格從低到高排序 SELECT * FROM products ORDER BY score DESC, price;

2.聚合函數(shù)

知識點:

聚合函數(shù): 又叫統(tǒng)計函數(shù),也叫分組函數(shù)

常用聚合函數(shù): sum( )         count( )         avg( )         max( )         min( )

聚合查詢基礎格式: select         聚合函數(shù)(字段名)         from         表名;

注意: 此處沒有分組默認整個表就是一個大的分組

注意: 聚合函數(shù)(字段名)會自動忽略null值,以后統(tǒng)計個數(shù)一般用count(*)統(tǒng)計因為它不會忽略null值

示例:

# 注意: 別名不建議用中文,以下僅僅為了演示
-- 示例1:統(tǒng)計當前商品一共有多少件
SELECT count(id) FROM products;
SELECT count(*) FROM products;
-- 示例2:對商品評分列進行計數(shù)、求最大、求最小、求和、求平均
SELECT
    COUNT(score) AS cnt,
    MAX(score) AS max_score,
    MIN(score) AS min_score,
    SUM(score) AS total_score,
    AVG(score) AS avg_score
FROM products;
-- 示例3:統(tǒng)計所有非自營商品評分的平均值
SELECT
    is_self,
    AVG(score)
FROM
    products
WHERE
    is_self = '非自營';

3.分組查詢

分組查詢關(guān)鍵字: group by

分組查詢基礎格式: select 分組字段名,聚合函數(shù)(字段名) from 表名 group by 分組字段名;

注意: select后的字段名要么在group by后面出現(xiàn)過,要么寫到聚合函數(shù)中,否則報錯.

分組查詢進階格式: select 分組字段名,聚合函數(shù)(字段名) from 表名 [where 非聚合條件] group by 分組字段名 [having 聚合條件];

where和having的區(qū)別?

書寫順序: where在group by 前,having在group by后

執(zhí)行順序: where在分組前,having在分組后

分組函數(shù): where后不能跟聚合條件,只能跟非聚合條件,having后可以使用聚合條件,也可以使用非聚合條件(不建議)

應用場景: 建議大多數(shù)過濾數(shù)據(jù)都采用where,只有當遇到聚合條件的時候再使用having

使用別名: where后不能使用別名,having后可以使用別名

-- 示例1:統(tǒng)計每個分類的商品數(shù)量
SELECT
    category_id,
    -- ② 再聚合:對每一組的id進行count計數(shù)
    COUNT(id) AS cnt
FROM products
-- ① 先分組:按照category_id進行分組
GROUP BY category_id;
-- 示例2:統(tǒng)計每個分類中自營和非自營商品的數(shù)量
SELECT
    category_id,
    is_self,
    COUNT(id) AS cnt
FROM products
GROUP BY category_id, is_self;
-- 示例3:統(tǒng)計每個分類商品的平均價格,并篩選出平均價格低于1000的分類
SELECT category_id,
       -- 再聚合
       AVG(price)
FROM products
-- 先分組
GROUP BY category_id
-- 對分組聚合的結(jié)果進行篩選
HAVING AVG(price) < 1000;

4.limit查詢

知識點:

分頁查詢關(guān)鍵字: limit

分頁查詢基礎格式: select 字段名 from 表名 limit x,y;

                x: 起始索引,默認從0開始 x = (頁數(shù)-1)*y

                y: 本次查詢的條數(shù)

注意: limit能完成topN需求,但是不能考慮到并列情況,此問題可以使用后期學習的開窗函數(shù)解決

示例:

- 示例1:獲取所有商品中,價格最高的商品信息
SELECT
    *
FROM products
ORDER BY price DESC
LIMIT 1; -- LIMIT 0, 1;
-- 示例2:將商品數(shù)據(jù)按照價格從低到高排序,然后獲取第2頁內(nèi)容(每頁3條)
SELECT
    *
FROM products
ORDER BY price
LIMIT 3, 3;
-- 示例3:當分頁展示的數(shù)據(jù)不存在時,不報錯,只不過查詢不到任何數(shù)據(jù)
SELECT * FROM products LIMIT 20, 10;

5.SQL順序

書寫順序: SELECT -> DISTINCT -> 聚合函數(shù) -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> LIMIT

執(zhí)行順序: FROM -> WHERE -> GROUP BY -> 聚合函數(shù) -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT

大家記住最后這個執(zhí)行順序就好,前面的各種格式都是根據(jù)這個來的.

三、結(jié)語

今天就先講這么多吧,下次給大家講用python操作MySql.

到此這篇關(guān)于SQL單表查詢?nèi)ヂ裕号判蚓酆戏纸M的文章就介紹到這了,更多相關(guān)sql單表查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

焦作市| 绥中县| 西乌珠穆沁旗| 阜平县| 寻乌县| 吉林市| 抚松县| 荔浦县| 巴南区| 安吉县| 宣化县| 桐梓县| 临沧市| 丰都县| 五河县| 增城市| 温宿县| 西林县| 建德市| 香港| 特克斯县| 沽源县| 濉溪县| 瑞安市| 闸北区| 台安县| 霍林郭勒市| 榆林市| 藁城市| 松江区| 如皋市| 梁山县| 会东县| 平谷区| 灵川县| 林口县| 东兰县| 蒙城县| 民勤县| 花莲市| 子长县|