php - MySQL 使用不同的 WHERE 子句进行多次计数并查看结果

标签 php mysql sql

我试图从我的订单表中获取:每个客户在一周内下的订单数量,然后在下周再次计数,然后再次计数,等等。

我正在使用 COUNT,但它总是返回空结果。

这是我的查询。

SELECT `uid`, (SELECT COUNT(`uid`) FROM `orders` WHERE `order_timestamp` > '1476707688' and `order_timestamp` < '1476189288') as 'number1',
       (SELECT COUNT(`uid`) FROM `orders` WHERE `order_timestamp` > '1476189288' and `order_timestamp` < '1475584488') as 'number2',
       (SELECT COUNT(`uid`) FROM `orders` WHERE `order_timestamp` > '1475584488' and `order_timestamp` < '1474979688') as 'number3'
FROM `orders` ORDER BY `uid` ASC

结果如下所示:

enter image description here

我知道一周内有多个客户发出多个订单。

如何进行该查询? 一个查询将返回客户在该时间段内所下订单的数量?

干杯,

最佳答案

只需使用条件聚合:

SELECT `uid`,
       SUM(`order_timestamp` > '1476707688' and `order_timestamp` < '1476189288') as number1,
       SUM(`order_timestamp` > '1476189288' and `order_timestamp` < '1475584488') as number2,
       SUM(`order_timestamp` > '1475584488' and `order_timestamp` < '1474979688') as number3
FROM `orders`
GROUP BY `uid` ASC;

注意:这按 uid 聚合,因此每个 uid 而非每个订单将有一行。这似乎是明智的做法。

关于php - MySQL 使用不同的 WHERE 子句进行多次计数并查看结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40108874/

相关文章:

sql - 向数据库中插入多个数据

mysql - 自动递增字符串的最后一个整数值

Mysql连接3个表的数据

sql - 添加约束以确保两个外键的公共(public)父级

php - 整理MYSQL数据

python - 在 Python 中使用 PyMysql 连接 MariaDB 的问题

mysql - 如何定义具有相同名称的 LEFT JOIN 变量

php - 陷入 Eloquent 查询和子查询的困境

php - 如何在没有乱码的情况下用php下载zip

php - Controller 级别的 Laravel 动态文件系统配置集