一、排序

格式: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. springmvc的前端控制器

    <servlet> <servlet-name>xxx</servlet-name> <servlet-class>org.springframewor ...

  2. C# 使用CsvHelper读取.csv文件

    1,先到包管理器下载 安装CsvHelper. 2,创建一个与csv文件字段名称相同的类 public class SurveyInfoModel { public string DIST_CD { ...

  3. C# AddRange为数组添加多个元素的代码

    将代码过程中重要的代码片段做个收藏,下面代码段是关于C# AddRange为数组添加多个元素的代码,希望对小伙伴有所用处.ArrayList ab = new ArrayList();ab.Add(& ...

  4. vim常用快捷键整理

    搜索快捷键 /  关键字n 向下匹配N 向上匹配 移动光标快捷键 gg 命令将光标移动到文档开头,等同于 1GG 命令将光标移动到文档末尾0 或功能键[Home] 这是数字『 0 』:移动到这一行的最 ...

  5. THUWC2019滚粗记

    Day-1 今年年初,留坑,以后补,多多关注. Day0 上午吃了碗粉,就坐地铁到了高铁站. 做高铁从长沙到了广州,最大的感受就是热热热热热热热热. 所以太热了不说了.(雾 汉堡王真香 Day1 上午 ...

  6. Hibernate对应关系(了解)

    布置的任务要用就写一下总结一下 hibernate有以下几种关系 一对一 一对多 多对一 多对多 首先这些对应关系是分单向和双向的 单向和双向有什么区别呢? 这个双向单向是面向对象的说法 意思就是你更 ...

  7. js数组sort排序方法的算法

    说明一下,ECMAScript没有定义使用哪种排序算法,各个浏览器的实现方式会有不同.火狐中使用的是归并排序,下面是Chrome的sort排序算法的实现. sort方法源码 DEFINE_METHOD ...

  8. 标签传播算法(Label Propagation Algorithm, LPA)初探

    0. 社区划分简介 0x1:非重叠社区划分方法 在一个网络里面,每一个样本只能是属于一个社区的,那么这样的问题就称为非重叠社区划分. 在非重叠社区划分算法里面,有很多的方法: 1. 基于模块度优化的社 ...

  9. go语言的开始入门(一)

    前言:作为Web开发人员掌握多种后台是必须的,趁自己有C语言的基础,所以尝试入门Golang (一).基本数据类型的认识 小结:int大小默认与系统相关,byte只能够存单字节,   (二).Gola ...

  10. Java裸写爬虫技术,运用多线程技术,高效爬取某个医疗机构网站数据

    最近喜欢上了数据的庞大的感觉,就爬取了一下某个医疗机构网站医疗数据,由于数据量庞大,只爬取了江西省的各个市的各个医院的各个科室的各个科室.中各种信息.其中用的持久层技术是hibernate框架,和用到 ...