sql速度优化多条合并为一条语句

在 SQL 中,结合 CASE 和 SUM 可以实现根据特定条件进行分组求和。在 ThinkPHP 中也可以使用类似的方式进行数据库查询操作。

例如,假设有一个销售数据表,包含字段 product_id (产品 ID)、 quantity (销售数量)和 category (产品类别)。现在要根据产品类别计算不同类别产品的销售总量,并对特定类别进行特殊处理。

$result = Db::table('sales_table')

->field('category,

SUM(CASE

WHEN category = "A" THEN quantity

ELSE 0

END) as categoryAQuantitySum,

SUM(CASE

WHEN category = "B" THEN quantity

ELSE 0

END) as categoryBQuantitySum')

->group('category')

->select();

在上述代码中,通过 CASE 语句对不同的产品类别进行判断,如果是特定类别(如"A"或"B"),则将对应的销售数量累加到总和中,否则为 0。最后使用 SUM 函数对满足条件的销售数量进行求和,并通过 group('category') 按照产品类别进行分组。

这样就可以得到不同产品类别的特定求和结果,方便进行数据分析和统计。

相关推荐
烟雨归来5 分钟前
Oracle备份NFS IO挂死引发PQ并行进程耗尽process
数据库·oracle
acd120098 分钟前
PHP 8.1 下 Swoole 协程 PDO 偶尔出现 MySQL 连接丢失问题排查
数据库·oracle
cc57250265318 分钟前
2027校招:大数据管理与应用转财务数字化,会计业务、SQL与BI学习路线
数据库·sql·学习
梦想不只是梦与想29 分钟前
SQLAlchemy:异步、连接池 (四)
数据库·fastapi·sqlalchemy
j7~1 小时前
【仿 RabbitMQ 项目】发布订阅消息队列 (篇八):交换机数据管理模块,分层类设计、SQLite 回调原理与代码实现
服务器·网络·数据库·消息队列·交换机·交换机数据管理·sqlite回调原理
PHP实战开发录1 小时前
PHP上传文件为什么会被覆盖
数据库·mysql·php
SelectDB技术团队1 小时前
VARIANT 列接入网关 JSON 日志:建表、导入、子列查询与物化的完整步骤
大数据·数据库·人工智能·elasticsearch·搜索引擎·json·apache doris
涛思数据(TDengine)1 小时前
TDengine IDMP 2.0.2 发布:元素关系可视化、数据建模与联邦查询三大升级
大数据·数据库·人工智能·时序数据库·tdengine·工业互联网·工业ai
小米里的大麦1 小时前
17 MySQL 视图
数据库·mysql
ss2731 小时前
PG实战笔记 | 07 PostgreSQL常见编译项及其作用
数据库·笔记·postgresql