Выберите количество строк, затем сгруппируйте их в круговую диаграмму

Мне действительно нужно закончить это, мне нужно, чтобы они были сгруппированы по четырем. В настоящее время я использую круговую диаграмму для своей таблицы, чтобы показать процентное соотношение каждого элемента и их количество с помощью этого запроса:

Это мой полный код: https://www.pastiebin.com/5be43c1f6ec73

$query = "SELECT DISTINCT trendx, COUNT(*) as counter FROM jeremy_table_trend GROUP BY trendx";

Тогда это результат моего запроса

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

Это вывод моей круговой диаграммы, но я хочу, чтобы они были сгруппированы по 4 — Undetected, Supported,Escalate and Not Supported, Как я могу это сделать? пожалуйста, помогите мне

введите описание изображения здесь

Это код моей диаграммы:

<!-- 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%';

0

Решение

Есть несколько способов подойти к этому, вы можете использовать объединенный запрос

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
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector