MySQL Group by With 计数函数
本篇文章将讨论 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 表,想要统计按订单日期分组的订单数量。
我们可以通过使用以下查询来实现这一点。
SELECT COUNT(OrderID) as Count, OrderDate
FROM Orders
GROUP BY OrderDate;
上面的查询将通过按订单日期对订单进行分组来检索所有订单,并为每个订单日期显示一条记录。 因此,结果视图中的每条记录都将包含 OrderDate 和该日期所有 OrderID 的计数。
查询的输出应为:
示例 2:下面是另一个查找每个员工的总工资的示例。 假设我们使用下表来检索结果。
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 的记录。
此查询的结果如下所示:
在 MySQL 中对多列进行 GROUP BY Count()
COUNT()
聚合函数可以与具有多列的 GROUP BY 子句一起使用。 在这种情况下,结果首先按第一列分组,然后按下一列分组,以此类推。
之后,所有具有相同分组值的行都被计数并显示为一个。
假设我们要根据下表计算特定客户在特定日期的订单。
我们可以使用以下查询来做到这一点。
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$
。 这同样适用于其余的记录。
相关文章
使用 Mysqldump 备份 MySQL 中的数据
发布时间:2023/05/09 浏览次数:192 分类:MySQL
-
本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。
更新 MySQL 表中的主键
发布时间:2023/05/09 浏览次数:61 分类:MySQL
-
本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。
在 MySQL 中获取命令历史记录
发布时间:2023/05/09 浏览次数:150 分类:MySQL
-
本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史
Oracle 的 decode 函数在 MySQL 中的等价物
发布时间:2023/05/09 浏览次数:115 分类:MySQL
-
本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。
使用 Ubuntu 连接远程 MySQL 服务器的不同方法
发布时间:2023/05/09 浏览次数:97 分类:MySQL
-
在本文中我们将学习如何使用 Ubuntu 连接远程 MySQL 服务器来操作数据以及启动和停止 MySQL 服务器。
在 Linux 中安装 MySQL 客户端
发布时间:2023/05/09 浏览次数:72 分类:MySQL
-
在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。
在 MySQL 中转换为十进制
发布时间:2023/05/09 浏览次数:150 分类:MySQL
-
有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。
在 MySQL 中获取当前日期和时间
发布时间:2023/05/09 浏览次数:145 分类:MySQL
-
本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间
更改 MySQL 服务器中的 max_allowed_packet Size
发布时间:2023/05/09 浏览次数:142 分类:MySQL
-
本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。