Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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 MYSQL/SQL计数百分比查询_Php_Mysql_Json - Fatal编程技术网

Php MYSQL/SQL计数百分比查询

Php MYSQL/SQL计数百分比查询,php,mysql,json,Php,Mysql,Json,我所拥有的 $query = "SELECT status_type, COUNT(*) as count, kpi_type, COUNT('kpi') * 100.00 as percentage FROM main GROUP BY status_type DESC;"; 我得到了什么 [{"Status":"SOLD","KPI_Percentage":"1400","KPI":"SALE","Stat

我所拥有的

$query =
  "SELECT
      status_type,
      COUNT(*) as count,
      kpi_type,
      COUNT('kpi') * 100.00 as percentage
  FROM
      main
  GROUP BY
      status_type DESC;";
我得到了什么

[{"Status":"SOLD","KPI_Percentage":"1400","KPI":"SALE","Status_Count":"14"}]
这是我的JSON数组

 $JSON_output[] = array('Status'         => $row['pin_status'],
                           'KPI'            => $row['kpi_type'],
                           'KPI_Percentage'         => $row['percent'],
                           'Status_Count'           => $row['count'],);}}
我想做的是

[{"status":"value","kpi":"value","count":"12""percentage":"%32.42"}]
我正在尝试统计状态类型和显示状态类型,我正在尝试显示kpi类型,并且与其他kpi类型相比,我正在计算kpi类型的百分比。因此,如果我有3个已售出、2个潜在客户和5个潜在客户,它将显示:潜在客户:20%已售出30%潜在客户50%

桌子

我在寻找什么样的答案

$query = //// THE CORRECT GOODS TO INSERT INTO THIS QUERY ////
  "SELECT
      status_type,
      COUNT(*) as count,
      kpi_type,
      COUNT('kpi') * 100.00 as percentage
  FROM
      main
  GROUP BY
      status_type DESC;";

如果您有任何问题,请告诉我。

我现在没有MySql,但您需要获取所有记录的总数 然后按状态和KPI进行分组,大致语法如下-可能会让您更接近:

select @Total:=Count(*) from InputTable;
select `Status`, `Kpi`, Count(*) as Status_Count, ((Count(*)  * 100.0)/ @Total) AS KPI_Percentage
from InputTable 
group by `Status`, `Kpi`
order by `Status`, `KPI`;
查询结果

        Invalid query: You have an error in your SQL syntax; check the manual
     that corresponds to your MySQL server version for the right syntax to use
     near 'select [status_type], [kpi_type], Count(), ((Count() * 100.0)/ @Total) 
    AS Perc' at line 3 Whole query: select @Total =(select Count() from main_pins) 
    select [status_type], [kpi_type], Count(), ((Count(*) * 100.0)/ @Total) 
    AS Percentage from main_pins group by [status_type], [kpi_type] order by [status_type],
 [kpi_type]

您可以尝试以下查询:

    SELECT status_type, kpi_type, Count(*), 
    ((Count(*)  * 100.0)/ (select Count(*) FROM main)) AS Percentage
    FROM main
    GROUP BY status_type, kpi_type
    ORDER BY status_type, kpi_type

添加了评论。

在修改了拉韦南尼加姆的答案后,终于得到了答案。感谢大家的帮助和投票,以获得一些关注

$query = "SELECT status_type, kpi_type, Count(*) as count,((Count(*)  * 100.0)/ (select Count(*) FROM main)) AS Percentage
                    FROM main
                    GROUP BY status_type, kpi_type
                    ORDER BY status_type, kpi_type";
给出了结果

[{"status_type":"Hot Lead","KPI":"Lead","Percentage":"0.31596","Count":"2"}

你能从你的表中找到一些记录吗..不确定你的意思吗?请共享你的表结构。按状态分组DESC。。。你是说按状态分组吗?我在你的表格中看不到状态,回复评论总是以@username开头,这样你回复的人会收到你回复的通知。我们通常不会坐在一个页面上等待回复;检查与您的MySQL服务器版本对应的手册,以了解在第3行“选择[status_type]、[kpi_type]、计数、计数*100.0/@Total AS Perc”附近使用的正确语法。完整查询:选择@Total=从主引脚选择计数选择[status_type]、[kpi_type]、计数**100.0/@Total作为主引脚组的百分比,按[status_type],[kpi_type]按[status_type]排序,[kpi_type]显示为[{status:null,kpi:Lead,Percentage:null,Count:null},我使用相同的记录和相同的查询进行了尝试。它工作正常[{pin_status:null,kpi:Lead,Percentage:0.31596,Count:null},选择kpi_类型,kpi_类型,计数,计数*100.0/从主_插脚中选择计数*按插脚状态从主_插脚组中的百分比,kpi_类型按插脚状态排序,kpi_类型;我看到我在哪里添加了两次kpi_类型。应该改为添加插脚状态。现在我得到了这个信息[{pin_status:C-Net Only,KPI:Lead,Percentage:0.31596,Count:null}所以不定义Count变量?
[{"status_type":"Hot Lead","KPI":"Lead","Percentage":"0.31596","Count":"2"}
$query = "SELECT status_type, kpi_type, Count(*) as count,((Count(*)  * 100.0)/ (select Count(*) FROM main)) AS Percentage
                    FROM main
                    GROUP BY status_type, kpi_type
                    ORDER BY status_type, kpi_type";