不败君

前端萌新&初级后端攻城狮

SQL统计多用户订单数量及价格

SQL统计多用户订单数量及价格

2020-06-24 18:13:00

围观(3965)

自从工作后, 写 SQL 的机会少了 其实这个博客还是原生 PHP 开发的, 大概在 16 年左右写的, 想过使用框架重写, 但是因为懒一直没写, 而且陆续还加了挺多功能的.

公司的项目和最近自己写的一些程序都是一直在用框架的 ORM 进行数据库操作.

最近有个需求就是计算订单数量及订单金额的, 脑子一热就会使用 ORM 去写. 例如这样:

public function getOrderNumByUser($user_id)
{
    return $this->where('user_id', $user_id)
        ->count();
}

如果只是查询某个用户的订单数, 那这样还是能处理的.

如果需求稍微改了一下, 需要获取多个用户的订单数量, 那这样就没法做到了, 而且好像是使用 ORM 没法做到(又好像使用分组可以做到)...


假设数据库订单表(orders)有这样的数据:

1.png

想要同时获取 user 1 和 user 2 的订单数量, 可以使用这样的 SQL:

select
sum(case when user_id = 1 then 1 else 0 end) user_1,
sum(case when user_id = 2 then 1 else 0 end) user_2
from orders

得到的结果:

2.png

如果想要获取交易金额总数, 则可以使用这样的 SQL:

select
sum(case when user_id = 1 then price else 0 end) user_1,
sum(case when user_id = 2 then price else 0 end) user_2
from orders

得到的结果:

3.png

主要是用了 sum 函数, 这个函数稍微搜索下都有很多资料, 主要就是平时太依赖 ORM , 将 SQL 的知识全丢了..

本文地址 : bubaijun.com/page.php?id=192

版权声明 : 未经允许禁止转载!

上一篇文章: PHP开发薅羊毛信息提醒

下一篇文章: PHP将金额分元互转单位

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语