MySQL统计分组后每组的个数
在实际的数据分析和统计中,经常需要对数据进行分组并统计每组的个数。MySQL作为一种常用的关系型数据库,提供了丰富的功能和语法来满足这个需求。本文将介绍如何使用MySQL进行分组统计,并给出相应的示例代码。
分组统计的概念
分组统计是指将数据按照某个字段进行分类,然后统计每个分类的数量。例如,假设有一张学生成绩表,包含学生的姓名和分数两个字段。我们可以按照分数进行分组,然后统计每个分数段的学生数量。
使用GROUP BY子句进行分组统计
在MySQL中,可以使用
GROUP BY
子句进行分组统计。
GROUP BY
子句将数据按照指定的字段进行分组,然后可以使用聚合函数如
COUNT()
、
SUM()
等来对每个分组进行统计。
下面是一个示例的学生成绩表:
CREATE TABLE scores (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
score INT
INSERT INTO scores (name, score) VALUES
('张三', 80),
('李四', 90),
('王五', 85),
('赵六', 80),
('钱七', 95);
现在,我们想要按照分数进行分组,并统计每个分数段的学生数量。可以使用以下SQL语句实现:
SELECT score, COUNT(*) as count
FROM scores
GROUP BY score;
上述SQL语句中,SELECT
语句用于选择要查询的字段,即分数和统计后的数量。COUNT(*)
用于统计每个分组的数量,as count
则将统计结果的列名命名为count
。FROM scores
用于指定要查询的表名,即学生成绩表。GROUP BY score
表示按照分数字段进行分组。
运行以上SQL语句,将得到以下结果:
score
count
从结果中可以看出,有2个学生的分数是80分,1个学生的分数是85分,1个学生的分数是90分,1个学生的分数是95分。
使用HAVING子句进行筛选
在分组统计中,有时候需要对分组后的结果进行筛选,只保留满足某个条件的分组。这时可以使用HAVING
子句。
例如,我们只想要保留分数大于等于90分的分组。可以使用以下SQL语句:
SELECT score, COUNT(*) as count
FROM scores
GROUP BY score
HAVING score >= 90;
上述SQL语句中的HAVING score >= 90
表示只保留分数大于等于90分的分组。
运行以上SQL语句,将得到以下结果:
score
count
从结果中可以看出,只有分数为90和95的分组被保留。
使用WITH ROLLUP进行分组小计
有时候需要在分组统计的结果中添加小计,即对所有分组的统计结果再进行一次统计。MySQL提供了WITH ROLLUP
关键字来实现这个功能。
例如,我们想要对学生成绩表按照分数进行分组,并且在结果中添加一个总计行。可以使用以下SQL语句:
SELECT IFNULL(score, '总计') as score, COUNT(*) as count
FROM scores
GROUP BY score WITH ROLLUP;
上述SQL语句中的IFNULL(score, '总计')
用于将空值(表示小计行)显示为'总计'。WITH ROLLUP
表示添加小计行。
运行以上SQL语句,将得到以下结果:
score
count
javacv mat 二值化
一和二都是我根据自己的想法动手写的二值化处理图片,可能和opencv库的函数求二值化有区别。一、用深度学习的正态分布和激活函数进行二值化在这里直接写代码:import numpy as np
import torch
import torch.nn as nn
import cv2
#1.silu激活函数
class SiLU(nn.Modu