Php 选择计数字符串,然后将其分组到饼图中
我真的需要完成这项工作,我需要将它们按四个分组,我目前正在使用饼图为我的表显示每个项目的百分比,并使用此查询显示它们的计数: 这是我的完整代码: 这就是我查询的结果Php 选择计数字符串,然后将其分组到饼图中,php,mysql,amcharts,Php,Mysql,Amcharts,我真的需要完成这项工作,我需要将它们按四个分组,我目前正在使用饼图为我的表显示每个项目的百分比,并使用此查询显示它们的计数: 这是我的完整代码: 这就是我查询的结果 Escalate 99 Not Supported 12809 PE.Win32.TRX.XXPE50FFF026 23 PE.Win32.TRX.XXPE50FFF027 102 PUA.Win32.TRX.XXPE50FFF026
Escalate 99
Not Supported 12809
PE.Win32.TRX.XXPE50FFF026 23
PE.Win32.TRX.XXPE50FFF027 102
PUA.Win32.TRX.XXPE50FFF026 1
PUA.Win32.TRX.XXPE50FFF027 16
PUA.Win32.TRX.XXPE50FFF027P0005 1
Ransom.Win32.TRX.XXPE50FFF026 96
Ransom.Win32.TRX.XXPE50FFF027 619
Rapid Proliferation 596
TROJ.Win32.TRX.XX.PE50FFF026 5
Undet 1425
Undet - component 17
Undet - Feedback 712
Undet - FileSize 9
Undet - M/P 73
Undet - Maturity 146
这是我的piechart的输出,但我希望它们按4分组-未检测、支持、升级和不支持。我该怎么做?请帮帮我
这是我的图表代码:
<!-- Chart code -->
<script>
var chart = AmCharts.makeChart("chartdiv", {
"fontSize":15,
"type": "pie",
"startDuration": 0,
"theme": "black",
"addClassNames": true,
"legend":{
"fontSize":15,
"position":"right",
"marginRight":250,
"autoMargins":false
},
"innerRadius": "0",
"defs": {
"filter": [{
"id": "shadow",
"width": "200%",
"height": "200%",
"feOffset": {
"result": "offOut",
"in": "SourceAlpha",
"dx": 0,
"dy": 0
},
"feGaussianBlur": {
"result": "blurOut",
"in": "offOut",
"stdDeviation": 5
},
"feBlend": {
"in": "SourceGraphic",
"in2": "blurOut",
"mode": "normal"
}
}]
},
"dataProvider":
[
<?php while($row = mysqli_fetch_array($result)): ?>
{
"TRENDX": "<?php echo $row['trendx'] ?>",
"Values": <?php echo $row['counter']; ?>
},
<?php endwhile; ?>
]
,
"valueField": "Values",
"titleField": "TRENDX",
"outlineAlpha": 0.4,
"depth3D": 30,
"balloonText": "[[title]]<br><span style='font-size:20px'><b>[[value]]</b> ([[percents]]%)</span>",
"angle": 20,
"export": {
"enabled": true
}
});
chart.addListener("init", handleInit);
chart.addListener("rollOverSlice", function(e) {
handleRollOver(e);
});
function handleInit(){
chart.legend.addListener("rollOverItem", handleRollOver);
}
function handleRollOver(e){
var wedge = e.dataItem.wedge.node;
wedge.parentNode.appendChild(wedge);
}
</script>
对于升级:
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Undet%';
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Escalate%';
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Not Supported%';
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx NOT LIKE '%Not Supported%' OR '%Undet%' OR '%Escalate%';
对于不支持的:
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Undet%';
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Escalate%';
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Not Supported%';
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx NOT LIKE '%Not Supported%' OR '%Undet%' OR '%Escalate%';
对于支持的:
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Undet%';
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Escalate%';
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Not Supported%';
select trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx NOT LIKE '%Not Supported%' OR '%Undet%' OR '%Escalate%';
有几种方法可以实现这一点,可以使用联合查询
select 'Undet' as trendx, COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Undet%'
union all
select 'Escalate', COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Escalate%'
union all
select 'Not Supported', COUNT(*) as counter from jeremy_table_trend WHERE trendx LIKE '%Not Supported%'
union all
select 'Supported', COUNT(*) as counter from jeremy_table_trend WHERE trendx NOT LIKE '%Not Supported%' OR '%Undet%' OR '%Escalate%';
或者,您也可以使用case语句和子查询,比如
select status, count(*) from (
select
case
when trendx like '%Undet%' then 'Undet'
when trendx like '%Escalate%' then 'Escalate'
when trendx LIKE '%Not Supported%' then 'Not Supported'
else 'Supported'
end as status
) x group by status
提供数据集也可能有用。我发布了我的完整代码,请帮助我回答这个问题,这就是为什么我建议您也提供数据集。兄弟!非常感谢!我真的很感激!Thakyou!