MySQL之排序、分组(五)
一、排序
格式: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之排序、分组(五)的更多相关文章
- MySQL的JOIN(五):JOIN优化实践之排序
这篇博文讲述如何优化JOIN查询带有排序的情况.大致分为对连接属性排序和对非连接属性排序两种情况.插入测试数据. CREATE TABLE t1 ( id INT PRIMARY KEY AUTO_I ...
- 【mysql】关联查询_子查询_排序分组优化
1. 关联查询优化 1.1 left join 结论: ①在优化关联查询时,只有在被驱动表上建立索引才有效! ②left join 时,左侧的为驱动表,右侧为被驱动表! 1.2 inner join ...
- Hadoop日记Day18---MapReduce排序分组
本节所用到的数据下载地址为:http://pan.baidu.com/s/1bnfELmZ MapReduce的排序分组任务与要求 我们知道排序分组是MapReduce中Mapper端的第四步,其中分 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 【MySQL】排序原理与案例分析
前言 排序是数据库中的一个基本功能,MySQL也不例外.用户通过Order by语句即能达到将指定的结果集排序的目的,其实不仅仅是Order by语句,Group by语句,Distinct语句都会隐 ...
- MySQL:基础—数据分组
MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...
- Mysql查看版本号的五种方式介绍
Mysql查看版本号的五种方式介绍 作者: 字体:[增加 减小] 类型:转载 时间:2013-05-03 一.使用命令行模式进入mysql会看到最开始的提示符;二.命令行中使用status可以看到 ...
- mysql 自定义排序顺序
mysql 自定义排序顺序 实例如:在sql语句中加入ORDER BY FIELD(status,3,4,0,2,1)语句可定义排序顺序 SELECT tsdvoucher0_.VOUCHER_ID ...
- mysql 查询每个分组前N条记录
mysql 查询每个分组前N条记录 假设存在表movie, 有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在gro ...
- 我的MYSQL学习心得(五)
原文:我的MYSQL学习心得(五) 我的MYSQL学习心得(五) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...
随机推荐
- linux的dd命令
一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...
- 解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真
通常我们拿到某个ECU的通信矩阵数据库文件,.dbc后缀名的文件. 直接使用CANdb++ Editor打开,可以很直观的读懂信号矩阵的信息,例如下图: 现在要把上图呈现的信号从.dbc文件中解析出来 ...
- ArrayDataProvider数据分页
模型 public function search($page=10){ $lists = self::find()->orderBy('id DESC')->all(); $dataPr ...
- 百度地图--JS版
百度地图JS版本 ----选择关键字地图展示对应地址---- CSS body, html { width: %; height: %; margin: ; font-family: "微软 ...
- css解决内联元素间的空白间隔
在内联元素的父级元素上设置font-size: 0px;即可.例如: <div class="wrap"> <ul> <li class=" ...
- Vue学习笔记二:v-cloak,v-text,v-html的使用
目录 v-cloak:解决插值表达式闪烁问题 安装插件Live Server 右键以HTTP形式运行HTML v-text:以属性方式使用插值表达式 v-cloak和v-text的区别 v-html: ...
- 移动开发day2_css预处理器_flex布局
css预处理器 一种技术,可以提高编写css代码的技术而已. 有3种预处理器常见 less sass stylues less使用流程 编写符合less语法的less文件 使用工具 将less编译成 ...
- 1. Nagios和 NagiosQL安装及配置
目录 1. Nagios 和 NagiosQL简介 2. Nagios+NagiosQL搭建环境说明 3. Nagios.Nagios-plugins和NagiosQL的安装 4. 配置NagiosQ ...
- python学习07
函数中的模块及包管理1)1.模块查找的顺序:运行代码时当前目录 -> PYTHONPATH ->系统环境变量PATH设置的路径2.导入模块的书写规范:内置模块-------第三方模块--- ...
- vue父子组件生命周期执行顺序
之前写了vue的生命周期,本以为明白了vue实例在创建到显示在页面上以及销毁等一系列过程,以及各个生命周期的特点.然而今天被问到父子组件生命周期执行顺序的时候一头雾水,根本不知道怎么回事.然后写了一段 ...