Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何用计数函数求和_Php_Sql_Codeigniter - Fatal编程技术网

Php 如何用计数函数求和

Php 如何用计数函数求和,php,sql,codeigniter,Php,Sql,Codeigniter,这是我的桌子: id | marital_stat | ==================== 1 divorced 2 divorced 3 married 4 single SELECT COUNT(CASE WHEN marital = 'divorced' THEN 1 END) AS divorcestat, COUNT(CASE WHEN marital = 'married' THEN 1 END) AS marriedstat

这是我的桌子:

id | marital_stat |
====================
1      divorced 
2      divorced 
3      married 
4      single
SELECT
COUNT(CASE WHEN marital = 'divorced'   THEN 1 END) AS divorcestat,
COUNT(CASE WHEN marital = 'married' THEN 1 END) AS marriedstat,
COUNT(CASE WHEN marital = 'single' THEN 1 END) AS singlestat
FROM status_tbl
我想分开每个婚姻状况的总和,我使用条件,因为在我的表中使用
varchar
而不是
integer

这是我在模型文件中的查询:

id | marital_stat |
====================
1      divorced 
2      divorced 
3      married 
4      single
SELECT
COUNT(CASE WHEN marital = 'divorced'   THEN 1 END) AS divorcestat,
COUNT(CASE WHEN marital = 'married' THEN 1 END) AS marriedstat,
COUNT(CASE WHEN marital = 'single' THEN 1 END) AS singlestat
FROM status_tbl
通过上面的查询生成我想要的值,结果是:

    divorcestat | marriedstat | singlestat
--------------------------------------------
    2               1              1
但是现在我需要将上面的所有值相加,并将从
计数
函数中生成一个
总计
(离婚+结婚+单身)->总计
。我该怎么做呢?我在stackoverflow中尝试了一些答案,但没有任何效果<代码>分组依据,联合
,只是不工作。

您可以使用count(*)

您可以向查询中添加
count(*)

SELECT
COUNT(CASE WHEN marital = 'divorced'   THEN 1 END) AS divorcestat,
COUNT(CASE WHEN marital = 'married' THEN 1 END) AS marriedstat,
COUNT(CASE WHEN marital = 'single' THEN 1 END) AS singlestat,
COUNT(*) AS total_stat
FROM status_tbl;
我希望这对您有所帮助。

您还可以使用“表表达式”来重用已计算的值

例如:

select
  *,
  divorcestat + marriedstat + singlestat as total
from (
  SELECT
  COUNT(CASE WHEN marital = 'divorced'   THEN 1 END) AS divorcestat,
  COUNT(CASE WHEN marital = 'married' THEN 1 END) AS marriedstat,
  COUNT(CASE WHEN marital = 'single' THEN 1 END) AS singlestat
  FROM status_tbl
) x
当用于计算值的表达式很复杂,并且不想在查询中重复它们时,这会很方便