如何在 mysql codeigniter 上取得百分比
How to make a percentage on mysql codeigniter
我有一个包含 2 个字段的 table。 Id_user第一个字段和第二个字段类型的浏览器,我试图让用户总数的百分比成为最喜欢浏览器的用户。在我尝试让她的查询结果与她的某个百分比不匹配后,怎么了?
|id_user| name_item
--------------------------
| 1 | safari |
| 2 | firefox |
| 3 | opera mini |
| 4 | safari |
| 5 | chrome |
| 6 | firefox |
| 7 | chrome |
| 8 | chrome |
| 9 | firefox |
| 10 | firefox |
| 11 | safari |
| 12 | opera mini |
这是预期的
| safari | 25% |
| opera mini | 17% |
| firefox | 33% |
| chrome | 25% |
控制器
public get_json() {
$browser = $this->My_model->get_browser();
foreach($browser as $row)
{
$data['browser'] []= $row['browser'];
$data['percentage'] []= $row['data_percentage'];
}
header('content-type: application/json');
echo json_encode($data);
}
型号
function get_browser() {
$query = $this->db->select('browser, 100 / count(*) as data_percentage')
->from('tb_browser')
->group_by('browser')
->get();
return $query->result_array();
}
试试这个,
$query = $this->db->select('browser, (count(*) / <total_rec_count>) *100 as data_percentage')
->from('tb_browser')
->group_by('browser')
->get();
return $query->result_array();
您应该将每个组的 COUNT(*)
除以 table 中的记录总数。对于后一个数量,您可以使用以下子查询:
SELECT COUNT(*) FROM tb_browser
完整代码如下:
function detail_metagenome_microbe_grafik($trflp_code, $metacode) {
$total = '(select count(*) from tb_browser)';
$query = $this->db->select('concat(round((100*count(*))/'.$total.',0),"%") as data_percentage')
->from('tb_browser')
->group_by('browser')
->get();
return $query->result_array();
}
需要得到实际总数才能进行计算
$query = $this->db->select('browser, (count(*) / (select count(*) from tb_browser)) *100 as data_percentage')
我对 mysql 有点生疏,手边没有实例...不幸的是 mysql 不支持 OVER()
我有一个包含 2 个字段的 table。 Id_user第一个字段和第二个字段类型的浏览器,我试图让用户总数的百分比成为最喜欢浏览器的用户。在我尝试让她的查询结果与她的某个百分比不匹配后,怎么了?
|id_user| name_item
--------------------------
| 1 | safari |
| 2 | firefox |
| 3 | opera mini |
| 4 | safari |
| 5 | chrome |
| 6 | firefox |
| 7 | chrome |
| 8 | chrome |
| 9 | firefox |
| 10 | firefox |
| 11 | safari |
| 12 | opera mini |
这是预期的
| safari | 25% |
| opera mini | 17% |
| firefox | 33% |
| chrome | 25% |
控制器
public get_json() {
$browser = $this->My_model->get_browser();
foreach($browser as $row)
{
$data['browser'] []= $row['browser'];
$data['percentage'] []= $row['data_percentage'];
}
header('content-type: application/json');
echo json_encode($data);
}
型号
function get_browser() {
$query = $this->db->select('browser, 100 / count(*) as data_percentage')
->from('tb_browser')
->group_by('browser')
->get();
return $query->result_array();
}
试试这个,
$query = $this->db->select('browser, (count(*) / <total_rec_count>) *100 as data_percentage')
->from('tb_browser')
->group_by('browser')
->get();
return $query->result_array();
您应该将每个组的 COUNT(*)
除以 table 中的记录总数。对于后一个数量,您可以使用以下子查询:
SELECT COUNT(*) FROM tb_browser
完整代码如下:
function detail_metagenome_microbe_grafik($trflp_code, $metacode) {
$total = '(select count(*) from tb_browser)';
$query = $this->db->select('concat(round((100*count(*))/'.$total.',0),"%") as data_percentage')
->from('tb_browser')
->group_by('browser')
->get();
return $query->result_array();
}
需要得到实际总数才能进行计算
$query = $this->db->select('browser, (count(*) / (select count(*) from tb_browser)) *100 as data_percentage')
我对 mysql 有点生疏,手边没有实例...不幸的是 mysql 不支持 OVER()