mysql分组累计sql问题

问题描述

mysql分组累计sql问题

某表有3个字段 分别为month money type 表结构和数据如下

我想根据表的月份对表数据进行分组,并且还进行累计,比如2月份的累计数据就等于1月份的加上2月份的。 大概最后得出的结构如下图

求高手帮忙指点一下sql 不知道一条sql语句能否实现,如果实现不了 哪就两个sql也可以。

解决方案

差不多就是下面这样,没有调测,自己试试

SELECT MONTH,SUM(MONEY) MONEY,总累计,省内累计,省外累计 from
(select month,money
,(select sum(money) from 某表 where month>='201501' and month<=r.month) 总累计
,(select sum(money) from 某表 where month>='201501' and month<=r.month and type='省内') 省内累计
,(select sum(money) from 某表 where month>='201501' and month<=r.month and type='省外') 省外累计
from 某表 r
) y group by month,总累计,省内累计,省外累计 order by MONTH

时间: 2024-08-30 21:47:43

mysql分组累计sql问题的相关文章

MySQL的常用SQL语句

修改密码 这是常见的大家一般都要用的 首先安装成功了打开cmd –> mysql -u root -p –>输入你的密码 –>修改mysql root用户密码 格式:mysql> set password for 用户名@localhost = password('新密码'); 举例:mysql> set password for root@localhost = password('root'); 上面例子将用户root的密码更改为root: 如果是学习使用一般密码该简单些

mysql 分组group by排序取每条记录中,时间最大的一条记录

mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录 以下是 test 表,测试sql CREATE TABLE IF NOT EXISTS `test` ( `id` int(10) unsigned NOT NULL auto_increment, `install` int(10) unsigned NOT NULL, `day` int(10) unsigned NOT NULL, `aid` int(10) unsigned NOT NULL, PRIMARY

Oracle和MySQL分组查询GROUP BY

Oracle和MySQL分组查询GROUP BY 真题1.Oracle和MySQL中的分组(GROUP BY)有什么区别?答案:Oracle对于GROUP BY是严格的,所有要SELECT出来的字段必须在GROUP BY后边出现,否则会报错:"ORA-00979: not a GROUP BY expression".而MySQL则不同,如果SELECT出来的字段在GROUP BY后面没有出现,那么会随机取出一个值,而这样查询出来的数据不准确,语义也不明确.所以,作者建议在写SQL语句

mysql全文搜索:sql的写法

首先,大家先去下载一份dvbbs.php beta1的代码,解压后先抛开php代码,找出你的mysql手册,如果没有手册那么就直接看下面的实例操作吧! mysql全文搜索,sql的写法: MATCH (col1,col2,-) AGAINST (expr [IN BOOLEAN MODE WITH QUERY EXPANSION]) 比如: SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('database'); MATCH()函

MySQL中优化sql语句查询常用的30种方法

本篇文章是对MySQL中优化sql语句查询常用的30种方法进行了详细的分析介绍,需要的朋友参考下   1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以

数据统计-请问如何实现下面的mysql分组查询(新学关系数据库感觉有点复杂所以求教)

问题描述 请问如何实现下面的mysql分组查询(新学关系数据库感觉有点复杂所以求教) 查找ip不为127.0.0.1的某个时间段内的数据(比如在2016-03-15 00:00:00至2016-03-15 23:59:59) 按照每5分钟一条分组(0-5,5-10一共288组数据) 再对每组数据按照uid去重 最后求得每一组的数量 解决方案 SELECT FLOOR(UNIX_TIMESTAMP(addTime) / (5 * 60)) time, COUNT(DISTINCT uid) FRO

mysql的查询sql语句转换成oracle的sql

问题描述 mysql的查询sql语句转换成oracle的sql SELECT CREATE_DATE SUM(ISBIND) AS ISBIND SUM(UNBIND) AS UNBIND SUM(SUBSCRIBE) AS SUBSCRIBE SUM(UNSUBSCRIBE) AS UNSUBSCRIBE FROM ( SELECT N.CREATE_DATE MAX( CASE N.EVENT WHEN 'subscribe' THEN COUNT ELSE 0 END ) SUBSCRIB

jsp mysql excel-在jsp中使用jxl.jar包来将mysql搜索语句sql结果集导出到excel文件

问题描述 在jsp中使用jxl.jar包来将mysql搜索语句sql结果集导出到excel文件 整体构思是:连接数据库由DBManager.java,创建excel样式由Excel.java:最后在excel.jsp实现!但现在数据库数据并不能显示,求指教,我是java小白! Excel.java代码 package com; import java.io.*; import java.sql.*; import javax.sql.rowset.CachedRowSet; import com

mysql排序问题的sql语句

问题描述 mysql排序问题的sql语句 有一个字段A,字段值有可能相同,写一个sql语句,将相同的值尽量分隔开.例如字段A的值:1,1,1,2,3,3:查询结果要求为:1,2,3,1,3,1.请问sql怎么写? 解决方案 没有直接的sql,建议取值后写程序排序 解决方案二: 同意楼上说法,sql没有这样的排序 解决方案三: 一直使用oracle.sqlserver,没用过mysql了. 这个查询,oracle.sqlserver都是可以实现的,说下oracle.sqlserver的实现方式,希