迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

MySQL Group by With 计数函数

作者:迹忆客 最近更新:2023/05/07 浏览次数:

本篇文章将讨论 SQL GROUP BY 子句以及使用 MySQL 的聚合函数。

GROUP BY 子句通常与一些聚合函数一起使用,例如 COUNT()、SUM()、MIN()、MAX() 和 AVG()。


MySQL 中的 GROUP BY 语法

在 MySQL 中,以下语法用于按某些列名称对结果视图进行分组。

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s);
GROUP BY and Aggregate Functions in MySQL

在 SQL 中,GROUP BY 子句可以与聚合函数一起使用,以根据特定条件对记录数进行计数、求和或聚合。

示例 1:假设我们有一个 ORDERS 表,想要统计按订单日期分组的订单数量。

ORDERS 表

我们可以通过使用以下查询来实现这一点。

SELECT COUNT(OrderID) as Count, OrderDate
FROM Orders
GROUP BY OrderDate;

上面的查询将通过按订单日期对订单进行分组来检索所有订单,并为每个订单日期显示一条记录。 因此,结果视图中的每条记录都将包含 OrderDate 和该日期所有 OrderID 的计数。

查询的输出应为:

按日期排序

示例 2:下面是另一个查找每个员工的总工资的示例。 假设我们使用下表来检索结果。

Employee 表

SELECT e.NAME, SUM(e.SALARY)
FROM Employee e
GROUP BY e.NAME;

在上面的查询中,我们首先从表中选择所有姓名,然后应用 SUM 函数计算每个姓名的薪水总和。 因此,每个名称对应的记录应该只有一条。

查询的输出应如下所示:

按姓名输出总工资组


MySQL 中的 GROUP BY 和 HAVING 子句

HAVING 子句可以与 GROUP BY 子句结合使用,以根据特定条件进一步过滤结果,如以下查询所示。

SELECT e.NAME, SUM(e.SALARY)
FROM Employee e
GROUP BY e.NAME
HAVING SUM(SALARY)>44000;

这个查询和上面一样; 然而,唯一的区别是我们应用了 HAVING 子句来进一步过滤薪水,以仅包括最终薪水总和大于 44000 的记录。

此查询的结果如下所示:

薪水大于 44000 的输出名称


在 MySQL 中对多列进行 GROUP BY Count()

COUNT() 聚合函数可以与具有多列的 GROUP BY 子句一起使用。 在这种情况下,结果首先按第一列分组,然后按下一列分组,以此类推。

之后,所有具有相同分组值的行都被计数并显示为一个。

假设我们要根据下表计算特定客户在特定日期的订单。

Orders 表

我们可以使用以下查询来做到这一点。

Select CustomerId, OrderDate, COUNT(OrderId) as OrdersByCustomerByDate
FROM ORDERS
GROUP BY CustomerId, OrderDate;

所有订单首先按 CustomerId 分组,然后按 OrderDate 分组。 之后,所有那些 CustomerIDs 和 OrderDates 相同的记录都被统计并显示为一条记录,如下面的查询结果所示。

按客户按日期输出订单

$CustomerId = 1$ 的客户有三个订单:一个是 2022 年 7 月 30 日的订单,两个是 2022 年 7 月 31 日的订单。

该客户在 2022 年 7 月 31 日的所有两个订单都汇总在查询结果的第二行,$OrdersByCustomerByDate = 2$。 这同样适用于其余的记录。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 MySQL 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:MySQL

在本教程中,我们将学习如何在 MySQL 服务器中更改时区。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便