SQL 根据分类进行个数统计

前言:使用数据库存储数据时,常会有根据存储数据的类型对数据的个数进行分类统计,可采用以下两种方法使用sql直接进行统计。

业务场景:消息表中存储各种消息,消息有多种类型,每条消息对应一个类型,前端展示时需要根据消息的种类提示消息的条数。

表结构:

CREATE TABLE `t_message` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `message_type` int(11) NOT NULL COMMENT '消息类型(1-任务通知,2-素材通知,3-系统通知)',
  `content` varchar(255) DEFAULT NULL COMMENT '消息内容',
  `is_read_already` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已读',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='消息中心-消息表'

处理方式:

1.使用 GROUP BY 进行分类统计:

SELECT message_type AS messageType,COUNT(id) AS total
FROM t_message
WHERE receiver = 60
GROUP
### SQL 查询统计个数示例 在 SQL 中,可以通过聚合函数 `COUNT()` 来实现统计数据的数量。以下是几个常见的 SQL 统计查询示例: #### 1. 基本统计总记录数 如果要统计某个表中的所有记录总数,可以使用如下语法: ```sql SELECT COUNT(*) AS total_count FROM table_name; ``` 此查询会返回指定表中所有的行数[^2]。 #### 2. 按条件统计特定字段的不重复值数量 当需要统计某一列的不同值数目时,可结合 `DISTINCT` 关键字来完成: ```sql SELECT COUNT(DISTINCT column_name) AS distinct_count FROM table_name; ``` 例如,在答题详情表中统计不同设备的回答次数,则可以用以下语句表示: ```sql SELECT COUNT(DISTINCT device_id) AS unique_device_count FROM answer_detail_table; ``` #### 3. 联合多个字段进行分组并统计每组内的条目数 对于更复杂的场景比如按客户 ID 和订单日期分别汇总各客户的订单量,可通过 GROUP BY 子句配合 COUNT() 函数达成目标: ```sql SELECT customer_id, order_date, COUNT(order_id) AS orders_per_customer FROM orders GROUP BY customer_id, order_date; ``` 这里展示了如何基于两个维度(即顾客编号与订购日)对订单数据加以分类整理,并得出相应区间内每位消费者所下的单据数目[^1]。 #### 4. 利用变量动态更新累计值或其他运算逻辑 除了标准方法外,还可以借助 MySQL 提供的用户定义变量来进行更加灵活的数据处理工作。下面的例子演示了怎样通过设置初始状态以及迭代修改的方式累加求和某列数值的过程: ```sql SET @sum := 0; UPDATE transactions SET cumulative_total = (@sum := @sum + amount); ``` 这段脚本首先初始化了一个名为 sum 的局部存储单元;接着每当遇到新一行记录的时候都会将其对应的金额加入到当前总计之中,最后把结果存入相应的累积总量字段里去[^3]。 以上就是关于利用 SQL 进行基本至高级别的各类统计操作的一些实例说明。希望这些内容能够帮助您更好地理解和应用数据库编程技术解决实际问题!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值