Php 如何在条件下将计数(*)作为总计

Php 如何在条件下将计数(*)作为总计,php,mysql,sql,laravel,laravel-5.5,Php,Mysql,Sql,Laravel,Laravel 5.5,我使用的是Laravel 5.5,我想在一个条件下执行SQL查询count(*)as total——如果http_响应等于0,那么它应该将总值设置为0,而不是像当前那样设置为1 http_response created_at session_id website_id 404 2018-03-03 17:20:18 2018-03-03 17:15:40-BaC-2 2 404 2018

我使用的是Laravel 5.5,我想在一个条件下执行SQL查询
count(*)as total
——如果http_响应等于0,那么它应该将总值设置为0,而不是像当前那样设置为1

http_response  created_at           session_id                  website_id

404            2018-03-03 17:20:18  2018-03-03 17:15:40-BaC-2   2
404            2018-03-03 17:20:18  2018-03-03 17:15:40-BaC-2   2
404            2018-03-03 17:20:18  2018-03-03 17:15:40-BaC-2   2
0              2018-02-27 14:21:14  2018-02-27 14:19:32-T6f-2   2
404            2018-02-28 14:21:14  2018-02-28 14:19:32-T6f-2   2
我的Laravel查询的外观(如果真的需要,我可以尝试获取此查询的原始SQL查询):

我得到的结果是:

03/03/2018 : 3
27/02/2018 : 1
28/02/2018 : 1
预期结果:

03/03/2018 : 3
27/02/2018 : 0
28/02/2018 : 1

 brokenlink::withTrashed()
 ...
 ->select('created_at', DB::raw('CASE WHEN http_response =0 THEN 0 ELSE count(*) END as total')) 
 ->groupBy('session_id')
 ->get();

我不知道Laravel,但您需要有效地将您的
计数(*)
更改为类似
计数的内容(当http\u response=0时,则为NULL,否则为1结束)
。或者,您可以使用一个
SUM
来代替:
SUM(当http\u response=0时,则为0,否则为1结束)
 brokenlink::withTrashed()
 ...
 ->select('created_at', DB::raw('CASE WHEN http_response =0 THEN 0 ELSE count(*) END as total')) 
 ->groupBy('session_id')
 ->get();