Rumah > pangkalan data > tutorial mysql > Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

WBOY
Lepaskan: 2022-03-09 16:17:12
asal
19734 orang telah melayarinya

Dalam mysql, anda boleh menggunakan pernyataan SELECT dengan fungsi SUM() dan "GROUP BY" untuk menjumlahkan kumpulan Sintaks ialah "SELECT query field SUM (summation field) AS field FROM table name WHERE condition GROUP. OLEH Mengelompokkan medan satu, mengelompokkan medan dua;".

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi mysql8.0.22, komputer Dell G3.

Cara melakukan jumlah kumpulan dalam mysql

Dalam mysql, anda boleh menggunakan

SELECT 查询字段 SUM(求和字段) AS 字段 FROM 表名 WHERE 条件 GROUP BY 分组字段一,分组字段二;
Salin selepas log masuk

untuk melaksanakan jumlah kumpulan.

Contohnya seperti berikut:

1) count() mencari bilangan baris dalam lajur tertentu

Ia mudah difahami, dikira (nama lajur) adalah untuk mencari bilangan baris dalam lajur tertentu Bilangan baris dalam lajur Perlu diingat bahawa lajur ini tidak mengira bilangan baris dengan nilai nol. Contoh:

>-- Tanya berapa ramai guru yang ada

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

>-- Tanya berapa baris yang terdapat dalam jadual guru PILIH KIRAAN(*) DARI guru;

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

Jika terdapat nilai pendua dalam lajur, kami mengira dan tidak mahu mengira nilai pendua, apa yang patut kita buat? Kita boleh menggunakan berbeza untuk menyelesaikan:

-- 查询成绩表里共有几个学生的成绩
SELECT COUNT(DISTINCT 学号) FROM score;
Salin selepas log masuk

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

2) sum() menjumlahkan lajur data

jumlah , yang adalah untuk menjumlahkan nilai lajur tertentu, dan hanya boleh mengira nilai. Contoh:

--  对所有成绩求和
SELECT SUM(成绩) FROM score;
Salin selepas log masuk

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

3) purata() nilai purata dalam lajur

Begitu juga, pengiraan purata Hanya nilai berangka boleh dikira:

-- 对所有成绩求平均值
SELECT AVG(成绩) FROM score;
Salin selepas log masuk

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

4) max() mencari nilai maksimum lajur data tertentu, min( ) mencari nilai minimum lajur data tertentu Nilai

-- 获取所有成绩中的最大成绩
SELECT MAX(成绩),MIN(成绩) FROM score;
Salin selepas log masuk

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

Pengumpulan

Dalam soalan itu, kami menyebut bahawa kami perlu tahu purata markah setiap subjek, maka kita perlu buat Group.

Dalam SQL, kumpulan mengikut pernyataan boleh mengumpulkan set hasil mengikut satu atau lebih lajur. Contoh:

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

-- 计算每一科课程的平均成绩
SELECT 课程号,AVG(成绩) FROM score GROUP BY 课程号;
Salin selepas log masuk

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

Dalam artikel sebelumnya, kami secara ringkas memperkenalkan tertib pelaksanaan pernyataan SQL: pertama jalankan daripada Jadual mana yang mendapat data, dan kemudian laksanakan penyataan pilih;


Di sini kita mendapatkan data daripada jadual skor dan menggunakan kumpulan demi pernyataan untuk mengumpulkan data mengikut peraturan tertentu; kemudian Kira kiraan() pada hasil terkumpul akhirnya pilih hasil gabungan dan ringkaskan setiap kumpulan hasil pengiraan dalam langkah sebelumnya ke dalam jadual .

Nyatakan syarat untuk syarat pengelompokan

Dalam soalan pertama, adalah perlu untuk "mengira purata markah setiap mata pelajaran dan mendapati bahawa skor purata lebih besar daripada atau sama dengan 80 mata". Dalam dua bahagian di atas, kami mendapat pengiraan Markah purata subjek setiap hari, kini nyatakan syarat untuk skor purata : "lebih daripada atau sama dengan 80 mata" , kami menggunakan mempunyai klausa .

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

Mempunyai klausa dan klausa mana kedua-duanya memilih data secara bersyarat.

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

Adakah ini bermakna susunan klausa mempunyai juga berada di hadapan ringkasan hasil pilih? Ya, klausa mempunyai menentukan syarat untuk hasil pengumpulan kumpulan mengikut, seperti memerlukan skor lebih besar daripada atau sama dengan 80. Selepas menapis keputusan, keputusan diringkaskan.

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

-- 对教师表根据教师姓名排序
SELECT * FROM teacher ORDER BY 教师姓名;
Salin selepas log masuk

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

Kami mendapati bahawa nilai null Null berada pada kedudukan pertama, jadi: Lajur yang mengandungi nilai null berada dalam Apabila mengisih, nilai nol akan berada pada permulaan Apabila jumlah data adalah besar dan anda ingin melihat nilai nol, anda boleh menggunakan pengisihan ini.

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

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

Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql

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

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

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

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

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

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

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

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

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

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

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

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

试一下吧:

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

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

推荐学习:mysql视频教程

Atas ialah kandungan terperinci Bagaimana untuk mengumpulkan dan menjumlahkan dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan