记录的查询—单表数据(下)

聚合函数和分组查询记录

COUNG()函数 :就散表中记录的条数。

SUM()函数 : 计算字段值的总和。

AVG()函数 : 计算字段值的平均值。

MAX()函数 : 查询表中字段值的最大值。

MIN()函数 :查询表中字段值的最小值。

使用聚合函数查询。

1.COUNT()函数

COUNT(*):计算表中的总记录,不管表中是否包含NULL值。

COUNT(指定字段):计算表中指定字段的记录,在具体统计中忽略NULL值。

实例1(1)

  • 题目:查询goods表中的总记录。

查询总记录。

mysql> SELECT COUNT(*) AS goods_num FROM goods;
+-----------+
| goods_num |
+-----------+
|         8 |
+-----------+
1 row in set (0.00 sec)

实例1(2)

  • 题目查询goods表中add_time值不为NULL的记录条数。

查询指定字段条数记录。

mysql> SELECT COUNT(add_time) AS goods_num FROM goods;
+-----------+
| goods_num |
+-----------+
|         6 |
+-----------+
1 row in set (0.00 sec)
SUM()函数

实例2

  • 题目:查询goods表中商品库存的总和。

查询总和

mysql> SELECT SUM(num) goods_num FROM goods;
+-----------+
| goods_num |
+-----------+
|       140 |
+-----------+
1 row in set (0.00 sec)
AVG()函数

实例3

  • 题目:查询goods表中每个商品的平均价格。

查询商品平均价格。

mysql> SELECT type,AVG(price) FROM goods GROUP BY type;
+--------+------------+
| type   | AVG(price) |
+--------+------------+
| 书籍    |  40.500000 |
| 水果    |  13.000000 |
| 蔬菜    |   5.000000 |
| 服装    |  65.000000 |
| 冷饮    |   3.000000 |
+--------+------------+
5 rows in set (0.00 sec)
MAX()函数与MIN()函数

实例4

  • 题目:查询goods表中商品的最高价格和最低价格。
mysql> SELECT MAX(price) maxpri,MIN(price) minpri FROM goods;
+--------+--------+
| maxpri | minpri |
+--------+--------+
|  65.00 |   3.00 |
+--------+--------+
1 row in set (0.00 sec)

分组查询

1.简单分组查询

实例5(1)

  • 题目: 将goods表中的记录按照type字段进行分组,并统计每组的数量。

按指定字段统计数量。

mysql> SELECT type,COUNT(*) FROM goods GROUP BY type;
+--------+----------+
| type   | COUNT(*) |
+--------+----------+
| 书籍    |        2 |
| 水果    |        2 |
| 蔬菜    |        2 |
| 服装    |        1 |
| 冷饮    |        1 |
+--------+----------+
5 rows in set (0.00 sec)

实例5(2)

  • 题目:将goods表中的记录按type字段分组,并统计每组商品名称。

按指定字段统计商品。

mysql> SELECT type,group_concat(name) FROM goods GROUP BY type;
+--------+---------------------------+
| type   | group_concat(name)        |
+--------+---------------------------+
| 书籍    | 斗罗大陆,斗破苍穹           |
| 冷饮    | 百事可乐                   |
| 服装    | 牛仔裤                     |
| 水果    | 火龙果,苹果                |
| 蔬菜    | 胡萝卜,青菜                |
+--------+---------------------------+
5 rows in set (0.00 sec)
使用HAVING过滤后分组

实例 6

  • 题目:将goods表中的记录按照type字段分组并统计每组的数量,然后去抽大于1的分组

按指定字段分组统计数量,并取出大于1的分组。

mysql> SELECT type,count(*)FROM goods GROUP BY type HAVING COUNT(*)>1;
+--------+----------+
| type   | count(*) |
+--------+----------+
| 书籍    |        2 |
| 水果    |        2 |
| 蔬菜    |        2 |
+--------+----------+
3 rows in set (0.00 sec)
  • WHERE字句与HAVING字句都具有按照条件筛选数据的功能主要区别:

    1.WHERE字句在进行分组操作之前用来选择记录,而HAVING字句在进行分组操作之后通过过滤来选择分组。
    
    2.HAVING字句中的每个字段你必须被包含仔SELECT关键字后的字段列表。
    
    3.HAVING字句可以包含聚合函数,但WHERE字句不能。
    
使用多个字段进行分组

实例7

  • 题目:将goods表中的记录按照type和num字段进行分组并统计,显示每个分组的商品类别、库存、商品名称和商品数量。

按多个指定字段进行分组,并取出相应数据。

mysql> SELECT type,num,group_concat(name),count(name) FROM goods GROUP BY type,num;
+--------+------+--------------------+-------------+
| type   | num  | group_concat(name) | count(name) |
+--------+------+--------------------+-------------+
| 书籍    |    3 | 斗罗大陆            |     1       |
| 书籍    |   17 | 斗破苍穹            |     1       |
| 冷饮    |   12 | 百事可乐            |     1       |
| 服装    |   60 | 牛仔裤              |     1       |
| 水果    |    0 | 苹果                |     1       |
| 水果    |   16 | 火龙果              |     1       |
| 蔬菜    |    5 | 胡萝卜              |     1       |
| 蔬菜    |   27 | 青菜                |     1       |
+--------+------+--------------------+-------------+
8 rows in set (0.00 sec)
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_bbbfamous

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值