开发者社区> wensongyu> 正文

12个月份统计分组

简介: /* * 根据月份来统计trade里面的入账,支出,总盈利 */ public function countMonth(){ $in = array(); $out = array(); $res = arr...
+关注继续查看

/*
* 根据月份来统计trade里面的入账,支出,总盈利 */ public function countMonth(){ $in = array(); $out = array(); $res = array(); $year = date("Y",time()); $in_sql = 'SELECT SUM(money) AS mon, FROM_UNIXTIME(cdate, "%m") AS m FROM trade WHERE way_type=1 GROUP BY m'; $out_sql = 'SELECT SUM(money) AS mon, FROM_UNIXTIME(cdate, "%m") AS m FROM trade WHERE way_type=0 GROUP BY m'; $res = 'SELECT SUM( IF (way_type>0,money,-money)) AS mon, FROM_UNIXTIME(cdate, "%m") AS m FROM trade GROUP BY m'; $obj = new Table("trade"); $inpdo = $obj->query($in_sql); $outpdo = $obj->query($out_sql); $respdo = $obj->query($res); $inRows = $inpdo->fetchAll(); $outRows = $outpdo->fetchAll(); $resRows = $respdo->fetchAll(); $in = $this->formartMonth($inRows); $out = $this->formartMonth($outRows); $res = $this->formartMonth($resRows); return array(implode(",", $in),implode(",", $out), implode(",", $res), ); } public function formartMonth($rows){ $arr = array(); for($i=1; $i<=12; $i++){ foreach($rows as $v){ if(intVal($v['m']) == $i){ $arr[$i] = $v['mon']; break; } $arr[$i] = 0; } } return $arr; }

 

结合chart.js插件,html代码:

<div>
             <ul id="before-bg-color-list" class="simple-list color-list">
                 <li class="before-fg-emerald padding10 margin10 place-left">收入</li>
                 <li class="before-fg-orange padding10 margin10  place-left">支出</li>
                 <li class="before-fg-red padding10  margin10 place-left">总和</li>
             </ul>
         </div>
         <div style="width: 70%">
            <canvas id="canvas"></canvas>
        </div>


        <script>
        var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
    
        var barChartData = {
            labels : ["一月",
                      "二月",
                      "三月",
                      "四月",
                      "五月",
                      "六月",
                      "七月",
                      "八月",
                      "九月",
                      "十月",
                      "十一月",
                      "十二月"
                      ],
            datasets : [
                {
                    fillColor : "#008a00",
                    strokeColor : "rgba(220,220,220,0.8)",
                    highlightFill: "rgba(220,220,220,0.75)",
                    highlightStroke: "rgba(220,220,220,1)",
                    data : [
                        <?php echo $countData?$countData[0]:"0,0,0,0,0,0,0,0,0,0,0,0"; ?>
                    ]
                },
                {
                    fillColor : "#fa6800",
                    strokeColor : "rgba(151,187,205,0.8)",
                    highlightFill : "rgba(151,187,205,0.75)",
                    highlightStroke : "rgba(151,187,205,1)",
                    data : [
                        <?php echo $countData?$countData[1]:"0,0,0,0,0,0,0,0,0,0,0,0"; ?>
                    ]
                },
                {
                    fillColor : "#ce352c",
                    strokeColor : "rgba(151,187,205,0.8)",
                    highlightFill : "rgba(151,187,205,0.75)",
                    highlightStroke : "rgba(151,187,205,1)",
                    data : [
                        <?php echo $countData?$countData[2]:"0,0,0,0,0,0,0,0,0,0,0,0"; ?>
                    ]
                }
            ]
    
        }
        window.onload = function(){
            var ctx = document.getElementById("canvas").getContext("2d");
            window.myBar = new Chart(ctx).Bar(barChartData, {
                responsive : true
            });
        }
    
        </script>
    </div>

效果如下:

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用lambda去重、map排序、按任意时间间隔(小时、半小时、分钟)进行结果统计
使用lambda去重、map排序、按任意时间间隔(小时、半小时、分钟)进行结果统计
120 0
L1-003 个位数统计 (15 分)
L1-003 个位数统计 (15 分)
37 0
7-19 树种统计 (10 分)
7-19 树种统计 (10 分)
47 0
1021 个位数统计 (15 分)
给定一个 k 位整数 N=dk−1​10k−1+⋯+d1​101+d0​ (0≤di​≤9, i=0,⋯,k−1, dk−1​>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
84 0
关于日期及时间字段的查询
在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询。关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法。
92 0
生成以周统计的表头,跨月份的周算在后一个月
这是人力统计的一个表格的表头,根据月份,划分周,每周从周一开始到周日(国内习惯性)。而跨月份的周算在前一个月还是后一个月,我们的需求是算在后一个月。根据情况而定。
72 0
7-3 个位数统计 (15 分)
给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
177 0
Mysql统计分组区间的人数和
统计各分数区间数据 现在要统计:<50、50-60、60-70、70-80、80-90、90-100、>=100分数区间的人数;利用 INTERVAL 划出7个区间;再利用 elt 函数将7个区间分别返回一个列名,如下SQL: 123456789101112131415 mysql> SELECT...
5342 0
+关注
wensongyu
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载