当前位置:  开发笔记 > 数据库 > 正文

结合GROUP BY和SUM的SQL

如何解决《结合GROUPBY和SUM的SQL》经验,为你挑选了1个好方法。

我需要SQL帮助.我有一个像这样的sqlite表;

CREATE TABLE mytable (datetime DATE, type TEXT, amount REAL)

我需要一个查询来总结每种类型和年 - 月的数量(因为你可以看到年份也被提取,因为数据可以跨越几年).我已经到了中途,但我对SQL有点生疏.

sqlite> SELECT strftime('%Y',datetime) AS year, strftime('%m',datetime) AS month, type, amount FROM mytable ;

2009|06|Type1|-1000.0
2009|06|Type1|-100.0
2009|06|Type2|-100.0
2009|07|Type1|-214.91
2009|07|Type2|-485.0

我在上面的查询中尝试了很多SUM和GROUP BY的组合,但是没有一个能达到我想要的效果.我想要的是一个结果,如:

2009|06|Type1|-1100.0
2009|06|Type2|-100.0
2009|07|Type1|-214.91
2009|07|Type2|-485.0

是的,类型应该是外键,我简化了一些东西,以便更容易提出问题:)



1> ChaosPandion..:
SELECT strftime('%Y',datetime) AS year, 
       strftime('%m',datetime) AS month, 
       type, 
       Sum(amount) As Amount 
FROM mytable 
Group By 1, 2, 3

注意

某些数据库不支持逐个索引,因此您必须这样做.

SELECT strftime('%Y',datetime) AS year, 
       strftime('%m',datetime) AS month, 
       type, 
       Sum(amount) As Amount 
FROM mytable 
Group By strftime('%Y',datetime), 
       strftime('%m',datetime), 
       type


使用GROUP BY(和ORDER BY)的序数时要小心 - 如果列顺序发生变化,则会产生影响.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有