最近一年的月份 建立試圖
CREATE ALGORITHM = UNDEFINED DEFINER = `root` @`%` SQL SECURITY DEFINER VIEW `ctrl_11_month_view` AS
SELECT
DATE_FORMAT(CURDATE(), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT((CURDATE() - INTERVAL 1 MONTH), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT((CURDATE() - INTERVAL 2 MONTH), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT((CURDATE() - INTERVAL 3 MONTH), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT((CURDATE() - INTERVAL 4 MONTH), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT((CURDATE() - INTERVAL 5 MONTH), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT((CURDATE() - INTERVAL 6 MONTH), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT((CURDATE() - INTERVAL 7 MONTH), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT((CURDATE() - INTERVAL 8 MONTH), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT((CURDATE() - INTERVAL 9 MONTH), '%Y-%m') AS `month`
UNION
SELECT
DATE_FORMAT(
(CURDATE() - INTERVAL 10 MONTH),
'%Y-%m'
) AS `month`
UNION
SELECT
DATE_FORMAT(
(CURDATE() - INTERVAL 11 MONTH),
'%Y-%m'
) AS `month`
統計數據
#統計沒個月交易額以及每月交易量
SELECT
t.MONTH AS 'month',
IFNULL(c.befores, 0) AS 'sums',
IFNULL(c.orderNum, 0) AS 'orderNum'
FROM
ctrl_12_month_view t
LEFT JOIN
(SELECT
YEAR(create_date),
MONTH(create_date),
SUM(befores) AS 'befores',
COUNT(create_date) AS 'orderNum',
DATE_FORMAT(create_date, '%Y-%m') AS 'create_date'
FROM
ctrl_order_info
WHERE order_status = 3
GROUP BY EXTRACT(YEAR_MONTH FROM create_date)) c
ON t.MONTH = c.create_date
GROUP BY t.MONTH ;
#統計每月註冊會員的人數以及 入駐的藝術家
SELECT
t.`month` AS 'month',
IFNULL(m.yishu, 0) AS 'yishu',
IFNULL(s.huiyuan, 0) AS 'huiyuan'
FROM
ctrl_12_month_view t
LEFT JOIN
(SELECT
COUNT(1) AS 'yishu',
DATE_FORMAT(in_time, '%Y-%m') AS 'in_time'
FROM
`ctrl_member_info`
WHERE `member_type` = 1
AND `del_flag` = 0
GROUP BY EXTRACT(YEAR_MONTH FROM in_time)) m
ON t.`month` = m.in_time
LEFT JOIN
(SELECT
COUNT(1) AS 'huiyuan',
DATE_FORMAT(create_date, '%Y-%m') AS 'create_date'
FROM
`ctrl_member_info`
WHERE `del_flag` = 0
GROUP BY EXTRACT(YEAR_MONTH FROM create_date)) s
ON t.`month` = s.create_date
GROUP BY t.MONTH ;
#獲取昨日的交易信息
SELECT
IFNULL(SUM(befores),0) AS 'sums',
IFNULL(COUNT(create_date),0) AS 'orderNum'
FROM
ctrl_order_info
WHERE order_status = 3
AND DATE(create_date) = DATE_SUB(CURDATE(), INTERVAL 1 DAY) ;
#獲取昨日的註冊信息 以及註冊總人數
SELECT
(SELECT
COUNT(1) AS 'huiyuan'
FROM
`ctrl_member_info`
WHERE `del_flag` = 0
AND DATE(create_date) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS 'huiyuan',
(SELECT
COUNT(1) AS 'yishu'
FROM
`ctrl_member_info`
WHERE `member_type` = 1
AND `del_flag` = 0
AND DATE(in_time) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)) AS 'yishu' ,
(SELECT COUNT(1)
FROM `ctrl_member_info`
WHERE `del_flag` = 0) AS 'peoples';
jsp 頁面 數據處理
<script type="text/javascript">
$(document).ready(function () {
liushui();
zhuce();
});
</script>
<div id="container" class="quarter-div blue">
<div class="to_do_list">
<fieldset class="mj_field">
<legend align="right"><h3 style="padding-left: 10px;padding-right: 10px;color: green;">流水</h3></legend>
<div id="mj_ls" style="width: 100%;height: 88%;"></div>
</fieldset>
</div>
</div>
<div id="container1" class="quarter-div green">
<div class="to_do_list">
<fieldset class="mj_field">
<legend align="right"><h3 style="padding-left: 10px;padding-right: 10px;color: green;">昨日統計</h3>
</legend>
<ul class="tongji">
<li>
<fieldset class="mj_field">
<legend align="right"><h3 style="padding-left: 10px;padding-right: 10px;color: #22B0FF;">
昨日流水</h3></legend>
<ul class="yesterday">
<li><h3 style="padding-left: 10px;padding-right: 10px;color: #22B0FF;">昨日交易數量: ${ctrlOrderInfo.orderNum}個</h3></li>
<li><h3 style="padding-left: 10px;padding-right: 10px;color: #22B0FF;">昨日交易金額: ${ctrlOrderInfo.sums}元</h3></li>
</ul>
</fieldset>
</li>
<li>
<fieldset class="mj_field">
<legend align="right"><h3 style="padding-left: 10px;padding-right: 10px;color: #22B0FF;">
會員註冊</h3></legend>
<ul class="yesterday">
<li><h3 style="padding-left: 10px;padding-right: 10px;color: #22B0FF;">昨日註冊會員數: ${ctrlMemberInfo.huiyuan}人</h3></li>
<li><h3 style="padding-left: 10px;padding-right: 10px;color: #22B0FF;">昨日入駐藝術家: ${ctrlMemberInfo.yishu}人</h3></li>
</ul>
</fieldset>
</li>
</ul>
</fieldset>
</div>
</div>
<div id="container2" class="quarter-div orange">
<div class="to_do_list">
<fieldset class="mj_field">
<legend align="right"><h3 style="padding-left: 10px;padding-right: 10px;color: green;">註冊</h3></legend>
<div id="zhuce" style="width: 100%;height: 88%;"></div>
</fieldset>
</div>
</div>
<script>
function liushui() {
var dom = document.getElementById("mj_ls");
var myChart = echarts.init(dom);
var app = {};
option = null;
app.title = '折柱混合';
//獲取數據 數據類型是數組
var orderNum = []
var sums = [];
var month = [];
$.ajax({
url: '${ctx}/ctrlorderinfo/ctrlOrderInfo/getOrderList',//地址
dataType: 'json',//數據類型
type: 'POST',//類型
timeout: 2000,//超時
//請求成功
success: function (data) {
data.forEach(function (v) {
orderNum.push(v.orderNum);
sums.push(v.sums);
month.push(v.month);
});
var maxSums = eval("Math.max(" + sums.toString() + ")");
var maxOrderNum = eval("Math.max(" + orderNum.toString() + ")");
myChart.hideLoading();
myChart.setOption(option = {
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999'
}
}
},
toolbox: {
feature: {
dataView: {show: true, readOnly: false},
magicType: {show: true, type: ['line', 'bar']},
restore: {show: true},
saveAsImage: {show: true}
}
},
legend: {
data: ['數量', '交易額']
},
xAxis: [
{
type: 'category',
data: month,
axisPointer: {
type: 'shadow'
},
//x軸 傾斜顯示
axisLabel: {
interval: 0,
rotate: 40
}
}
],
yAxis: [
{
type: 'value',
name: '數量/個',
min: 0,
//y軸最大數
max: maxOrderNum,
//y軸間距
interval: maxOrderNum / 10,
axisLabel: {
formatter: '{value}'
}
},
{
type: 'value',
name: '交易額/元',
min: 0,
//y軸最大數
max: maxSums,
//y軸間距
interval: maxSums / 10,
axisLabel: {
formatter: '{value}'
}
}
],
series: [
{
name: '數量',
type: 'bar',
data: orderNum,
itemStyle: { //配置樣式,設置每一個柱子的顏色
normal: {
color: '#bcded8',
label: {
show: true, //開啓顯示
position: 'top', //在上方顯示
textStyle: { //數值樣式
color: 'black',
fontSize: 10
}
}
}
}
},
{
name: '交易額',
yAxisIndex: 1,
type: 'bar',
data: sums,
itemStyle: { //配置樣式,設置每一個柱子的顏色
normal: {
color: '#dedca1',
label: {
show: true, //開啓顯示
position: 'top', //在上方顯示
textStyle: { //數值樣式
color: 'black',
fontSize: 10
}
}
}
}
}
]
});
console.info(orderNum);
console.info(data);
},
//失敗/超時
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (textStatus === 'timeout') {
alert('請求超時');
setTimeout(function () {
alert('從新請求');
}, 2000);
}
alert("error");
}
});
}
function zhuce() {
var dom = document.getElementById("zhuce");
var myChart = echarts.init(dom);
var app = {};
option = null;
app.title = '折柱混合';
var yishu = []
var huiyuan = [];
var month = [];
$.ajax({
url: '${ctx}/ctrlmemberinfo/ctrlMemberInfo/getMemberDate',//地址
dataType: 'json',//數據類型
type: 'POST',//類型
timeout: 2000,//超時
//請求成功
success: function (data) {
data.forEach(function (v) {
yishu.push(v.yishu);
huiyuan.push(v.huiyuan);
month.push(v.month);
});
var maxhuiyuan = eval("Math.max(" + huiyuan.toString() + ")");
myChart.hideLoading();
myChart.setOption(option = {
title: {
// text:'平臺註冊人數計:263 人',
// link:'http://www.baidu.com',//主標題超連接
target: 'blank',//主標題超連接打開方式
textStyle: { //設置主標題風格
color: '#47d1de',//設置主標題字體顏色
fontStyle: '' //主標題文字風格
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
crossStyle: {
color: '#999999'
}
}
},
toolbox: {
feature: {
dataView: {show: true, readOnly: false},
magicType: {show: true, type: ['line', 'bar']},
restore: {show: true},
saveAsImage: {show: true}
}
},
legend: {
data: ['會員', '藝術家']
},
xAxis: [
{
type: 'category',
data: month,
axisPointer: {
type: 'shadow'
},
axisLabel: {
interval: 0,
rotate: 40
}
}
],
yAxis: [
{
type: 'value',
name: '人數',
min: 0,
max: maxhuiyuan,
interval: maxhuiyuan / 10,
axisLabel: {
formatter: '{value}'
}
}
],
series: [
{
name: '會員',
type: 'bar',
data: huiyuan,
itemStyle: { //配置樣式,設置每一個柱子的顏色
normal: {
color: '#47d1de',
label: {
show: true, //開啓顯示
position: 'top', //在上方顯示
textStyle: { //數值樣式
color: 'black',
fontSize: 10
}
}
}
}
},
{
name: '藝術家',
type: 'bar',
data: yishu,
itemStyle: { //配置樣式,設置每一個柱子的顏色
normal: {
color: '#de998d',
label: {
show: true, //開啓顯示
position: 'top', //在上方顯示
textStyle: { //數值樣式
color: 'black',
fontSize: 10
}
}
}
}
}
]
});
},
//失敗/超時
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (textStatus === 'timeout') {
alert('請求超時');
setTimeout(function () {
alert('從新請求');
}, 2000);
}
alert("error");
}
});
}
</script>