一、排序

格式:select * from 表 order by 字段 asc|desc

1、查询所有的商品进行排序(升序asc、降序desc)

mysql> select * from product order by price asc;
+-----+--------+-------+---------------------+
| pid | pname | price | pdate |
+-----+--------+-------+---------------------+
| 3 | 小赵 | -50 | 2019-01-28 15:49:32 |
| 1 | 小兵 | 0.03 | 2019-01-28 15:48:46 |
| 2 | 小王 | 33 | 2019-01-28 15:49:11 |
| 4 | 小王 | 33 | 2019-01-28 16:16:45 |
+-----+--------+-------+---------------------+
4 rows in set (0.03 sec) mysql> select * from product order by price desc;
+-----+--------+-------+---------------------+
| pid | pname | price | pdate |
+-----+--------+-------+---------------------+
| 2 | 小王 | 33 | 2019-01-28 15:49:11 |
| 4 | 小王 | 33 | 2019-01-28 16:16:45 |
| 1 | 小兵 | 0.03 | 2019-01-28 15:48:46 |
| 3 | 小赵 | -50 | 2019-01-28 15:49:32 |
+-----+--------+-------+---------------------+
4 rows in set (0.00 sec)

2、查询名称中含有“王”字的商品,按照价格降序排序!

mysql> select * from product where pname like '%王%' order by price desc;
+-----+--------+-------+---------------------+
| pid | pname | price | pdate |
+-----+--------+-------+---------------------+
| 4 | 小王 | 35 | 2019-01-29 15:29:59 |
| 2 | 小王 | 33 | 2019-01-28 15:49:11 |
+-----+--------+-------+---------------------+
2 rows in set (0.00 sec)

二、常用的聚合函数:sum()求和,avg()平均,max()最大值,min()最小值,count()计数;

  注意:聚合函数不统计 null值

1、获得所有商品价格的总和;

mysql> select sum(price) from product;
+------------+
| sum(price) |
+------------+
| 18.03 |
+------------+
1 row in set (0.04 sec)

2、获取所有价格的平均价格:

mysql> select avg(price) from product;
+------------+
| avg(price) |
+------------+
| 4.5075 |
+------------+
1 row in set (0.00 sec)

3、获得所有商品的个数;

mysql> select count(*) from product;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)

三、分组

1、准备数据

mysql> alter table product add cid varchar(32);  //添加分类
Query OK, 0 rows affected (1.18 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc product;
+-------+-------------+------+-----+-------------------+-----------------------------
| Field | Type | Null | Key | Default | Extra
+-------+-------------+------+-----+-------------------+-----------------------------
| pid | int(11) | NO | PRI | NULL | auto_increment
| pname | varchar(20) | YES | | NULL |
| price | double | YES | | NULL |
| pdate | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP
| cid | varchar(32) | YES | | NULL |
+-------+-------------+------+-----+-------------------+-----------------------------
5 rows in set (0.11 sec)

//初始化数据
mysql> update product set cid='';
Query OK, 4 rows affected (0.15 sec)
Rows matched: 4 Changed: 4 Warnings: 0 mysql> update product set cid='' where pid in (2,3,4);
Query OK, 3 rows affected (0.14 sec)
Rows matched: 3 Changed: 3 Warnings: 0 mysql> select * from product;
+-----+--------+-------+---------------------+------+
| pid | pname | price | pdate | cid |
+-----+--------+-------+---------------------+------+
| 1 | 小兵 | 0.03 | 2019-01-31 15:53:07 | 1 |
| 2 | 小王 | 33 | 2019-01-31 15:54:25 | 2 |
| 3 | 小赵 | -50 | 2019-01-31 15:54:25 | 2 |
| 4 | 小王 | 35 | 2019-01-31 15:54:25 | 2 |
+-----+--------+-------+---------------------+------+
4 rows in set (0.00 sec)

2、查询:根据cid分组,分组后统计商品的个数.

mysql> select cid , count(*) from product group by cid;
+------+----------+
| cid | count(*) |
+------+----------+
| 1 | 1 |
| 2 | 3 |
+------+----------+
2 rows in set (0.05 sec)

3、查询:根据cid分组,分组统计每组商品的平均价格:

mysql> select cid,avg(price) from product group by cid having avg(price) > 5;
+------+------------+
| cid | avg(price) |
+------+------------+
| 2 | 6 |
+------+------------+
1 row in set (0.07 sec)

4、查询经验总结,优先级顺序如下:

select distinct *| 字段...
from 表
where 查询条件
group by 分组字段
having 分组条件
order by 排序字段 asc|desc

待续..........................

MySQL之排序、分组(五)的更多相关文章

  1. MySQL的JOIN(五):JOIN优化实践之排序

    这篇博文讲述如何优化JOIN查询带有排序的情况.大致分为对连接属性排序和对非连接属性排序两种情况.插入测试数据. CREATE TABLE t1 ( id INT PRIMARY KEY AUTO_I ...

  2. 【mysql】关联查询_子查询_排序分组优化

    1. 关联查询优化 1.1 left join 结论: ①在优化关联查询时,只有在被驱动表上建立索引才有效! ②left join 时,左侧的为驱动表,右侧为被驱动表! 1.2 inner join ...

  3. Hadoop日记Day18---MapReduce排序分组

    本节所用到的数据下载地址为:http://pan.baidu.com/s/1bnfELmZ MapReduce的排序分组任务与要求 我们知道排序分组是MapReduce中Mapper端的第四步,其中分 ...

  4. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  5. 【MySQL】排序原理与案例分析

    前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐 ...

  6. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  7. Mysql查看版本号的五种方式介绍

    Mysql查看版本号的五种方式介绍 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-03   一.使用命令行模式进入mysql会看到最开始的提示符;二.命令行中使用status可以看到 ...

  8. mysql 自定义排序顺序

    mysql 自定义排序顺序 实例如:在sql语句中加入ORDER BY FIELD(status,3,4,0,2,1)语句可定义排序顺序 SELECT tsdvoucher0_.VOUCHER_ID ...

  9. mysql 查询每个分组前N条记录

    mysql 查询每个分组前N条记录 假设存在表movie,  有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在gro ...

  10. 我的MYSQL学习心得(五)

    原文:我的MYSQL学习心得(五) 我的MYSQL学习心得(五) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...

随机推荐

  1. vue上传图片 base64+canvas压缩图片

    这是先将图片 base64转码 在拿canvas压缩的

  2. CnPack IDE 专家包(CnWizards)显示代引用单元列表

    CnWizards_1.1.3.896

  3. Linux学习之路2-linux系统烧写

    fastboot烧写方式 准备工作: 硬件– 串口线连接开发板串口con3到PC的串口– OTG线连接开发板的OTG接口和PC的USB接口软件– 串口工具(超级终端),默认波特率为115200– 烧写 ...

  4. AWS Step Function Serverless Applications

    Installing VS Components To follow along with this article, you must have an AWS account and install ...

  5. P1462 通往奥格瑞玛的道路

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...

  6. 经典面试题-python函数之默认参数

    1.可变的默认参数----list  示例: def add(a, mylist=[]): # print(id(mylist)) mylist.append(a) return mylist pri ...

  7. SEO基础内容

     学习SEO人群 网络设计师 网站站长 搜索引擎相关人员 网络营销顾问 企业主 搜索引擎 Yahoo msn google baidu SEM包括SEO,竞价排名等 搜索引擎爬虫流程 派出爬虫-> ...

  8. VS2017添加引用报错

    未能正确加载“ReferenceManagerPackage”包. 此问题可能是因配置更改或安装另一个扩展导致的.可通过查看文件“C:\Users\Administrator\AppData\Roam ...

  9. 将Python3导出为exe程序

    一.pyinstaller简介 Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各 ...

  10. java 根据经纬度坐标计算两点的距离算法

    /** * @Desc 根据经纬度坐标计算两点的距离算法<br> * @Author yangzhenlong <br> * @Data 2018/5/9 18:38 */ p ...