mysql分组选择数据_详解MySQL 数据分组

创建分组

分组是在SELECT语句中的GROUP BY 子句中建立的。

例:

SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id;

9be08ade49c1fe057bbda3f8841a0daa.png

GROUP BY

GROUP BY子句可以包含任意数目的列,这使得能对分组进行嵌套,为数据分组提供更细致的控制。

如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组商家进行汇总。换句话说,在建立分组时,指定的所有列都一起计算。(所有不能从个别的列取回数据)。

GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式,不能使用别名

除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出。

如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,他们将分为一组。

GROUP BY子句必须出现在WHERE子句之后,ORDER BY 子句之前。

过滤分组

如果想要列出至少有两个订单的所有骨科,这样的数据就必须基于完整的分组而不是个别的行进行过滤。

可以使用HAVING

SELECT cust_id, COUNT(*) AS orders FROM orders GROUP BY cust_id HAVING COUNT(*) >= 2;

7942228dc5d81f35dfa8053642d3739a.png

HAVING和WHERE的差别,WHERE在数据分组前进行过滤,HAVING在分组后进行过滤。当然,两个也可以在同一条语句中出现。

列出具有2个(含)以上、价格为10(含)以上的产品的供应商

SELECT vend_id, COUNT(*) AS num_prods FROM products WHERE prod_price >= 10 GROUP BY vend_id HAVING COUNT(*) >= 2;

fcdaa56bf46b42de73cdb102716df5f8.png

列出具有两个至上的产品的供应商

SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id HAVING COUNT(*) >= 2;

7c7343ead58f63f585315a8346cc4485.png

分组和排序

ORDER BY

GROUP BY

排序产生的输出

分组行。但输出可能不是分组的顺序

任意列都可以使用(非选择的列也可以)

只可能使用选择列或表达式列,而且必须使用每个选择列表达式

不一定需要

如果与聚集函数一起使用列(表达式),则必须使用

检索总计订单价格大于等于50的订单的订到号和总计订单价格

SELECT order_num, SUM(quantity*item) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(quantity*item_price) >= 50;

23a5142df4ede429e752995f39ce6039.png

如果按总计订单价格排序输出

SELECT order_num, SUM(quantity * item_price) AS ordertotal FROM orderitems GROUP BY order_num HAVING SUM(quantity * item_price) >= 50 ORDER BY ordertotal;

1673ae168d075b91b8a2432d6deac11f.png

SELECT子句的顺序

子句

说明

是否必须使用

SELECT

要返回的列或表达式

FROM

从中检索数据的表

仅在从表选择数据时使用

GROUP BY

分组说明

仅在按组计算聚集时使用

WHERE

行级过滤

HAVING

组级过滤

ORDER BY

输出排序顺序

LIMIT

要检索的行数

以上就是详解MySQL 数据分组的详细内容,更多关于MySQL数据分组的资料请关注我们其它相关文章!

本文标题: 详解MySQL 数据分组

本文地址: http://www.cppcns.com/shujuku/mysql/370615.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一个开放源代码的虚拟化平台,能够以容器的形式打包和分发应用程序。MySQL是一种流行的开源系型数据库管理系统。使用Docker部署MySQL可以极大简化安装和配置的过程,并且能够实现数据的持久化。 首先,我们需要在Docker上搜索并选择适合的MySQL镜像。可以通过运行`docker search mysql`命令来查找可用的MySQL镜像。选择合适的镜像后,可以通过`docker pull <镜像名称>`来下载镜像,例如`docker pull mysql:latest`。 下载完成后,我们可以运行以下命令来创建一个MySQL容器: ``` docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=your_password -d mysql:latest ``` 这个命令将会创建一个名为mysql的容器,并将MySQL服务的默认端口3306映射到宿主机的3306端口。同样,我们可以设置一个root密码,让MySQL服务有一个基本的访问控制。 这样,MySQL容器就成功运行起来了。我们可以通过`docker ps`命令来查看正在运行的容器。接下来,我们可以使用MySQL客户端连接到该容器。可以通过以下命令登录到MySQL容器内部的MySQL服务: ``` docker exec -it mysql mysql -uroot -p ``` 然后,我们可以在MySQL容器内部使用标准的MySQL命令来管理和操作数据库。 要实现数据的持久化,我们可以将MySQL容器内部的数据目录和宿主机的目录进行挂载。可以使用`-v`参数来指定目录的挂载点。例如: ``` docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=your_password -v /path/to/mysql/data:/var/lib/mysql -d mysql:latest ``` 这将会将MySQL容器内部的`/var/lib/mysql`目录与宿主机上的`/path/to/mysql/data`目录进行挂载,从而实现数据的持久化。 通过以上步骤,我们可以使用Docker部署MySQL,并且实现数据的持久化。这样,我们可以方便地在不同的环境之间快速部署和迁移MySQL数据库

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值