Table of Contents
How to perform group sum in mysql
用SQL解决业务问题分析思路
Home Database Mysql Tutorial How to group and sum in mysql

How to group and sum in mysql

Mar 09, 2022 pm 04:15 PM
mysql

In mysql, you can use the SELECT statement with the SUM() function and "GROUP BY" to perform group sums. The syntax is "SELECT query field SUM (summation field) AS field FROM table name WHERE condition GROUP BY Grouping field one, grouping field two;".

How to group and sum in mysql

The operating environment of this tutorial: windows10 system, mysql8.0.22 version, Dell G3 computer.

How to perform group sum in mysql

In mysql, you can use

SELECT 查询字段 SUM(求和字段) AS 字段 FROM 表名 WHERE 条件 GROUP BY 分组字段一,分组字段二;
Copy after login

to perform group sum.

Examples are as follows:

1) count() finds the number of rows in a certain column

It is easy to understand, count(column name) is to find the number of rows in a certain column The number of rows in the column. It is worth noting that this column does not count the number of rows with null values. Example:

>-- Query how many teachers there are

How to group and sum in mysql

>-- Query how many rows there are in the teacher table SELECT COUNT(*) FROM teacher;

How to group and sum in mysql

If there are duplicate values ​​in the column, we count and don’t want to count duplicate values, what should we do? We can use distinct to solve:

-- 查询成绩表里共有几个学生的成绩
SELECT COUNT(DISTINCT 学号) FROM score;
Copy after login

How to group and sum in mysql

2) sum() sums a certain column of data

sum, that is To sum the values ​​in a column, only numerical values ​​can be calculated. Example:

--  对所有成绩求和
SELECT SUM(成绩) FROM score;
Copy after login

How to group and sum in mysql

3) avg() averages the values ​​in a certain column

Similarly, the average can only be calculated Calculate numerical values:

-- 对所有成绩求平均值
SELECT AVG(成绩) FROM score;
Copy after login

How to group and sum in mysql

##4) max() finds the maximum value of a certain column of data, min() finds the minimum value of a certain column of data

-- 获取所有成绩中的最大成绩
SELECT MAX(成绩),MIN(成绩) FROM score;
Copy after login

How to group and sum in mysql

Group

In the question, we mentioned that we need to know the average score of each subject, then we need to group it.

In SQL, the group by statement can group the result set according to one or more columns. Example:

How to group and sum in mysql

-- 计算每一科课程的平均成绩
SELECT 课程号,AVG(成绩) FROM score GROUP BY 课程号;
Copy after login

How to group and sum in mysql

In the previous article, we briefly introduced the execution order of SQL statements: which table is executed first Get the data and then execute the select statement;


Here we get the data from the

score table and use the group by statement to group the data according to certain rules; then in the group Calculate count() on the results; finally select the combined results and summarize each set of calculation results in the previous step into a table.

Specify conditions for grouping conditions

In the first question, it is required to "calculate the average score of each subject and get the average score to be greater than or equal to 80 points". In the above two sections, we got the calculation The average score of a subject every day, now specify the condition for the average score

: "greater than or equal to 80 points" , we use the having clause.

How to group and sum in mysql

The having clause and the where clause are both conditional selection of data. The difference is that where cannot be used with the summary function.

-- 计算平均成绩大于等于80分的课程;
SELECT 课程号,AVG(成绩) FROM score GROUP BY 课程号 HAVING AVG(成绩)>=80;
Copy after login

Does that mean that the order of the having clause is also in front of the summary of select results? Yes, the having clause specifies conditions for the grouping results of group by, such as requiring a score of greater than or equal to 80. After filtering out the results, the results are summarized.

How to group and sum in mysql

-- 对教师表根据教师姓名排序
SELECT * FROM teacher ORDER BY 教师姓名;
Copy after login

How to group and sum in mysql

We found that the null value Null is ranked first, so:

Columns containing null values ​​are sorted when sorting , the null value will be at the beginning, When the amount of data is large and you want to see the null value, you can use this sorting.

另外,在补充一个limit语句从查询结果中取出指定行,比如,我们如果从刚才的查询结果中只取第一行:

-- 计算平均成绩大于等于80分的课程并根据成绩降序排,并获取第一行
SELECT 课程号,AVG(成绩) FROM score GROUP BY 课程号 HAVING AVG(成绩)>=80 ORDER BY AVG(成绩) DESC LIMIT 1;
Copy after login

How to group and sum in mysql

接下来我们进行一个总结。

用SQL解决业务问题分析思路

简单来说:明确问题,将问题翻译成大白话,逐步进行拆解,并写出分析思路和对应的SQL思路。

1) 明确问题,将问题翻译成大白话:

“计算各科的平均成绩并且得出平均成绩大于等于80分的课程并降序排列”翻译成大白话就是:

“计算每一门课程平均成绩,然后根据得出的结果,进行大于等于80分的条件查询,对查询结果进行降序排列”。

2) 逐步进行拆解,并写出分析思路和对应的SQL思路:

① 对课程号进行分组,计算每一门课程的平均成绩;

② 对①的结果指定条件“>=80”;

③ 对②的结果进行降序排列;

我们可以把拆解后的思路套用到下方的公式中:

select 查询结果
from 从那张表中查找数据
where 查询条件(运算符、模糊查询)
group by 分组(每个)
having 对分组结果指定条件
order by 对查询结果排序
limit 从查询结果中取出指定行;
Copy after login

试一下吧:

select 查询结果[课程号,avg(成绩)]
from 从那张表中查找数据[成绩表score]
where 查询条件(运算符、模糊查询)[No]
group by 分组(每个)[课程号]
having 对分组结果指定条件[avg(成绩)>=80]
order by 对查询结果排序[avg(成绩)desc]
limit 从查询结果中取出指定行;[No]
Copy after login

这样子,问题是不是就迎刃而解呢?

推荐学习:mysql视频教程

The above is the detailed content of How to group and sum in mysql. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

The relationship between mysql user and database The relationship between mysql user and database Apr 08, 2025 pm 07:15 PM

In MySQL database, the relationship between the user and the database is defined by permissions and tables. The user has a username and password to access the database. Permissions are granted through the GRANT command, while the table is created by the CREATE TABLE command. To establish a relationship between a user and a database, you need to create a database, create a user, and then grant permissions.

Do mysql need to pay Do mysql need to pay Apr 08, 2025 pm 05:36 PM

MySQL has a free community version and a paid enterprise version. The community version can be used and modified for free, but the support is limited and is suitable for applications with low stability requirements and strong technical capabilities. The Enterprise Edition provides comprehensive commercial support for applications that require a stable, reliable, high-performance database and willing to pay for support. Factors considered when choosing a version include application criticality, budgeting, and technical skills. There is no perfect option, only the most suitable option, and you need to choose carefully according to the specific situation.

RDS MySQL integration with Redshift zero ETL RDS MySQL integration with Redshift zero ETL Apr 08, 2025 pm 07:06 PM

Data Integration Simplification: AmazonRDSMySQL and Redshift's zero ETL integration Efficient data integration is at the heart of a data-driven organization. Traditional ETL (extract, convert, load) processes are complex and time-consuming, especially when integrating databases (such as AmazonRDSMySQL) with data warehouses (such as Redshift). However, AWS provides zero ETL integration solutions that have completely changed this situation, providing a simplified, near-real-time solution for data migration from RDSMySQL to Redshift. This article will dive into RDSMySQL zero ETL integration with Redshift, explaining how it works and the advantages it brings to data engineers and developers.

How to optimize MySQL performance for high-load applications? How to optimize MySQL performance for high-load applications? Apr 08, 2025 pm 06:03 PM

MySQL database performance optimization guide In resource-intensive applications, MySQL database plays a crucial role and is responsible for managing massive transactions. However, as the scale of application expands, database performance bottlenecks often become a constraint. This article will explore a series of effective MySQL performance optimization strategies to ensure that your application remains efficient and responsive under high loads. We will combine actual cases to explain in-depth key technologies such as indexing, query optimization, database design and caching. 1. Database architecture design and optimized database architecture is the cornerstone of MySQL performance optimization. Here are some core principles: Selecting the right data type and selecting the smallest data type that meets the needs can not only save storage space, but also improve data processing speed.

How to fill in mysql username and password How to fill in mysql username and password Apr 08, 2025 pm 07:09 PM

To fill in the MySQL username and password: 1. Determine the username and password; 2. Connect to the database; 3. Use the username and password to execute queries and commands.

Query optimization in MySQL is essential for improving database performance, especially when dealing with large data sets Query optimization in MySQL is essential for improving database performance, especially when dealing with large data sets Apr 08, 2025 pm 07:12 PM

1. Use the correct index to speed up data retrieval by reducing the amount of data scanned select*frommployeeswherelast_name='smith'; if you look up a column of a table multiple times, create an index for that column. If you or your app needs data from multiple columns according to the criteria, create a composite index 2. Avoid select * only those required columns, if you select all unwanted columns, this will only consume more server memory and cause the server to slow down at high load or frequency times For example, your table contains columns such as created_at and updated_at and timestamps, and then avoid selecting * because they do not require inefficient query se

How to copy and paste mysql How to copy and paste mysql Apr 08, 2025 pm 07:18 PM

Copy and paste in MySQL includes the following steps: select the data, copy with Ctrl C (Windows) or Cmd C (Mac); right-click at the target location, select Paste or use Ctrl V (Windows) or Cmd V (Mac); the copied data is inserted into the target location, or replace existing data (depending on whether the data already exists at the target location).

Understand ACID properties: The pillars of a reliable database Understand ACID properties: The pillars of a reliable database Apr 08, 2025 pm 06:33 PM

Detailed explanation of database ACID attributes ACID attributes are a set of rules to ensure the reliability and consistency of database transactions. They define how database systems handle transactions, and ensure data integrity and accuracy even in case of system crashes, power interruptions, or multiple users concurrent access. ACID Attribute Overview Atomicity: A transaction is regarded as an indivisible unit. Any part fails, the entire transaction is rolled back, and the database does not retain any changes. For example, if a bank transfer is deducted from one account but not increased to another, the entire operation is revoked. begintransaction; updateaccountssetbalance=balance-100wh

See all articles