在数据可视化过程中,需要对数据进行分段分类的统计,然后传递给图表进行渲染显示。如下图:
正常的数据库字段为浮点类型,如
po_namepo_incomeA5000.00B3520.00C4920.00D8900.00E12000.00F3512.00G4800.00而实现的是区间分组,如果将数据直接传递给前端,通过js对象数组解析,步骤繁琐,幸好mysql提供的简单快捷的执行方案。
SQL语句 public function getIncome()
{
global $db, $res;
dbc();
@$township = $_POST['township'];
//@$township = "神头镇";
$sql = "select COUNT(CASE WHEN orders_income BETWEEN 0 AND 1000 THEN orders_income END) AS income0,COUNT(CASE WHEN orders_income BETWEEN 1000 AND 2000 THEN orders_income END) AS income1,COUNT(CASE WHEN orders_income BETWEEN 2000 AND 3000 THEN orders_income END) AS income2,COUNT(CASE WHEN orders_income BETWEEN 3000 AND 5000 THEN orders_income END) AS income3,COUNT(CASE WHEN orders_income BETWEEN 5000 AND 8000 THEN orders_income END) AS income4,COUNT(CASE WHEN orders_income BETWEEN 8000 AND 12000 THEN orders_income END) AS income5,COUNT(CASE WHEN orders_income >=12000 THEN orders_income END) AS income6 from " . $db->table('orders') . " where 1";
IF ($township != "") {
$sql .= " AND orders_workplace =\"" . $township . "\"";
}
$sql .= " group by orders_province";
$row = $db->queryall($sql);
$res["data"] = $row;
die(json_encode_lockdata($res));
}
输入的json为:
{"err":"","res":"","data":[{"income0":"5","income1":"0","income2":"0","income3":"4","income4":"4","income5":"4","income6":"3"}]}
前端调用
$.ajax({
type: 'post',
async: false,
data: {township: township},
url: './api/api.php?act=getIncome&token=3cab7ce4142608c0f40c785b5ab5ca24',
dataType: "json",
success: function (res) {
var dataName = ['无', '1000-2000元', '2000-3000元', '3000-5000元', '5000-8000元', '8000-12000元', '12000元以上'];
var dataList = [
{name: dataName[0], value: res.data[0].income0},
{name: dataName[1], value: res.data[0].income1},
{name: dataName[2], value: res.data[0].income2},
{name: dataName[3], value: res.data[0].income3},
{name: dataName[4], value: res.data[0].income4},
{name: dataName[5], value: res.data[0].income5},
{name: dataName[6], value: res.data[0].income6},
]
//过滤数据为0的数据;
var v = filterValue(dataList, 0);
//console.log(v);
//筛选新的坐标轴name;
var vn = [];
if (v) {
for (var i = 0; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?