mysql - MySQL 使用 if 语句选择 COUNT(*)
问题描述
我有 1 个有很多记录的表,我想分离COUNT(*)
值(利润/损失),我可以用 2 个 MySQL 查询来做到这一点,但我只想用 1 个查询来做到这一点,这可能吗?
$query_string = '
SELECT
MONTH(order_time) AS month,
CASE WHEN order_profit > 0 THEN COUNT(*) END AS profit,
CASE WHEN order_profit < 0 THEN COUNT(*) END AS loss,
COUNT(*) AS total
FROM
trade_histories
';
$query_string .= '
WHERE
order_profit IS NOT NULL
';
$query_string .= '
GROUP BY
MONTH(order_time)
';
这是我迄今为止尝试过的,这就是结果
stdClass Object ( [month] => 1 [profit] => 447 [loss] => [total] => 447 )
stdClass Object ( [month] => 2 [profit] => 1153 [loss] => [total] => 1153 )
stdClass Object ( [month] => 3 [profit] => 898 [loss] => [total] => 898 )
stdClass Object ( [month] => 4 [profit] => [loss] => 640 [total] => 640 )
stdClass Object ( [month] => 12 [profit] => [loss] => 2 [total] => 2 )
解决方案
推荐阅读
- socket.io - Socket IO 默认房间
- java - 嵌套异常为 com.microsoft.sqlserver.jdbc.SQLServerException: 输出参数的索引 0 无效
- vba - VBA 宏中的运行时错误
- c - 控制可能到达非空函数的末尾。频率
- javascript - 基于年份的Angular Js表格格式
- gitlab - 在同一个存储库中嵌套管道
- python - 基于相关矩阵的csv文件重新排序
- c++ - 如何在 Linux 运行时检查堆栈使用情况?
- flutter - Flutter_Console 每个命令只是冻结并且不返回任何内容
- javascript - 这段 Javascript 代码中的“This”指的是什么?