MySQL 数据底部出现总计字样 第二种办法 纵向合并 20161103

上次在博客http://www.cnblogs.com/Mr-Cxy/p/5923375.html

我们使用了group by with rollup 函数 field自定义排序 来实现添加底部总计字样,代码很长,

再有就是我们使用纵向合并 union all 函数 ifnull sum(if())函数来实现纵向合并添加总计字样

SELECT IFNULL(f.城市,"总计") AS 城市,f.7月金额,f.8月金额,f.9月金额
FROM (
    SELECT e.*
    FROM (
        SELECT b.城市,SUM(IF(b.年月=201607,b.金额,NULL)) AS 7月金额,SUM(IF(b.年月=201608,b.金额,NULL)) AS 8月金额,SUM(IF(b.年月=201609,b.金额,NULL)) AS 9月金额
        FROM (
         SELECT city AS 城市,DATE_FORMAT(order_time,"%Y%m") AS 年月,SUM(pay_money) AS 金额
         FROM test_a03order AS a
         GROUP BY city,DATE_FORMAT(order_time,"%Y%m")
        ) AS b
        GROUP BY b.城市
    ) AS e
    UNION ALL(
        SELECT SUM(IF(1=2,0,NULL)) AS 城市,SUM(IF(d.年月=201607,d.金额,NULL)) AS 7月金额,SUM(IF(d.年月=201608,d.金额,NULL)) AS 8月金额,SUM(IF(d.年月=201609,d.金额,NULL)) AS 9月金额
        FROM (
            SELECT city AS 城市,DATE_FORMAT(order_time,"%Y%m") AS 年月,SUM(pay_money) AS 金额
            FROM test_a03order AS c
            GROUP BY city,DATE_FORMAT(order_time,"%Y%m")
        ) AS d
    )
) AS f

时间: 2024-10-10 08:10:18

MySQL 数据底部出现总计字样 第二种办法 纵向合并 20161103的相关文章

Mybatis中实体类属性和数据列之间映射的四种办法

http://blog.csdn.net/lmy86263/article/details/53150091 Mybatis不像hibernate中那么自动化,通过@Column注解或者直接使用实体类的属性名作为数据列名,而是需要自己指定实体类属性和 数据表中列名之间的映射关系,这一点让用惯了Hibernate的人很不习惯,所幸经过探索找到了建立映射关系的三种办法,其中总也有比较 简单的. 首先先定义一个实体类,如下: public class User implements Serializa

Redis和MySQL数据一致中出现的几种情况

1. MySQL持久化数据,Redis只读数据 redis在启动之后,从数据库加载数据. 读请求: 不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取 写请求: 数据首先都写到数据库,之后更新redis(先写redis再写mysql,如果写入失败事务回滚会造成redis中存在脏数据) 2.MySQL和Redis处理不同的数据类型 MySQL处理实时性数据,例如金融数据.交易数据 Redis处理实时性要求不高的数据,例如网站最热贴排行榜,好友列表等 在并发不高的情况下,读操作

Angular中Controller之间的信息传递(第二种办法):$emit,$broadcast,$on

此处不做详细讲解,提供一个小例子,看了便懂 <html ng-app=""> <div ng-controller="ctrlController"> <div ng-controller="ctrl1Controller"></div> <div ng-controller="ctrl2Controller"></div> </div> &l

mongodb清理collection中大量数据的2种办法

1 shell中for循环清理 每次去连接一下mongo, 进行数据的remove操作 echo "Begin ..." >> /root/time.log; echo $(date +%Y-%m-%d-%H:%M:%S) >>/root/time.log; for((i=1;i<=100000000;i++)); do objectid=`/usr/local/mongodb/bin/mongo 127.0.0.1:37017/test -uadmin

MSCOMM32控件注册的两种办法

当我们在VC或者VB或者VS环境下基于MSCOMM控件开发的软件发布后,是不是有种很爽的感觉,可以拿到别人的电脑上运行下你的软件,可是当你移植过去后却发现软件无法点击的动(别笑,我在开发C#软件时就是这样)或者出现如下图所示的情况: 这种情况一般出现在Windows7版本下,这说明MSCOMM32没注册,我们可以选择两种方法去解决,一种方法是当我们安装VC++6.0/VB6.0时,如果选择了ACtiveX控件项(自定义安装),MSComm控件就会自动安装在计算机上了,并在系统文件夹下多了3个文件

磁盘阵列3块有硬盘掉线使用第二种校验方式恢复数据

Raid6磁盘阵列可以看做是raid5阵列的升级版,在raid5的奇偶校验基础上又增加了一种校验,就空间使用率而言raid5磁盘阵列是N-1的空间使用率,raid6阵列是N-2的空间使用率.小编经常记录恢复raid5磁盘阵列的案例,今天介绍一个raid6阵列的数据恢复案例.这次数据恢复的硬件设备是某公司的一台web服务器,raid6磁盘阵列,一共有6块硬盘,现在已经有3块硬盘处于离线状态,服务器崩溃,服务器上的MySQL数据库数据丢失,业务停滞,客户想在北京联系数据恢复公司进行数据恢复,于是联系

Android客户端和服务器端数据交互的第二种方法

网上有很多例子来演示Android客户端和服务器端数据如何实现交互不过这些例子大多比较繁杂,对于初学者来说这是不利的,现在介绍几种代码简单.逻辑清晰的交互例子,本篇博客介绍第二种: 一.服务器端: 代码1:添加名为"AndroidServerServlet.java"的文件 package com.ghj.packageofservlet; import java.io.IOException; import java.io.PrintWriter; import javax.serv

java对MySql数据访问

终于解决了所有困难,通过java程序实现对MySql数据的访问,其中有许多困难,尤其对于一个新接触JDBC编码来说,每一次的错误都让人有些摸不着头脑,趁现在对一些产生的问题还记得,帮大家记录下来. 1.首先通过上篇对MySql环境的一些配置,?需要先学习一些MySql基本语法,在MySql中创建新的数据库:MySql语法:create database if not exists 数据库名;然后在其中加入你所需要存储的数据. 2.第二种方法:在.sql文本中添加MySql语法通过cmd命令提示符

mysql数据表分表策略(转)

mysql分表方法: 方法一. 做数据库集群! 主从数据库 双向热备份(或一对多的数据库实时备份策略),这样可将数据库查询分摊到几个服务器去(可跟服务器负载均衡结合起来架构) 优点:扩展性好,没有多个分表后的复杂操作(php代码)缺点:单个表的数据量还是没有变,一次操作所花的时间还是那么多,硬件开销大. 方法二. 根据特殊情况,按照特定规则分表:比如 用户聊天表,message_00,message_01,message_02……….message_98,message_99.然后根据用户的ID