首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql查询,选择,按分钟分组和求和

问Mysql查询,选择,按分钟分组和求和
EN

Stack Overflow用户
提问于 2012-12-07 10:33:52
回答 4查看 9.1K关注 0票数 3

我有一个如下所示的数据库表:

代码语言:javascript
复制
id | donation_type | donation_amount | time_inserted
1    em1              20                2012-12-07 10:01:00
2    em1              50                2012-12-07 10:01:00
3    em1              100               2012-12-07 10:01:00
4    em1              150               2012-12-07 10:02:00
5    em1              100               2012-12-07 10:02:00
6    em1              30                2012-12-07 10:02:00
7    em1              40                2012-12-07 10:03:00
8    em1              65                2012-12-07 11:16:00

我想询问一下每分钟捐款的数量。

我也想总结一下在那一分钟内所作的捐款。

因此,我希望返回的结果(使用上表将是):

代码语言:javascript
复制
10:00:01 => 3, amount => 170 # 3 donations in 10:01:00, totaling £170
10:00:02 => 3, amount => 280 # 3 donations in 10:02:00, totaling £280
10:00:03 => 1, amount => 40 # 1 donation in 10:03:00, totaling £40
11:16:00 => 1, amount => 65 # 1 donation in 11:16:00, totaling £40

编辑-示例我希望由SQL查询返回

代码语言:javascript
复制
# Example of what I would like returned..

time                  |  donation_count  | donation_sum_in_minute
2012-12-07 10:01:00           3                  170
2012-12-07 10:02:00           3                  280
2012-12-07 10:03:00           1                  40
2012-12-07 11:16:00           1                  65  #the next hour!

我使用下面的查询获取自上午10时以来的捐款总额。但我也想按分钟对它们进行分组,给出上面的结果示例。

代码语言:javascript
复制
SELECT SUM(donation_amount) 
FROM `DONATION` 
WHERE `time_inserted` > '2012-12-07 10:00:00' 
AND `donation_type` = 'em1';
Returns: 807,563 # the total sum of donations since 10am today.
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-07 11:10:59

代码语言:javascript
复制
SELECT 
  SUM(donation_amount) AS total_donation_amount,
  EXTRACT(YEAR from time_inserted) AS year,
  EXTRACT(MONTH from time_inserted) AS month,
  EXTRACT(DAY from time_inserted) AS day,
  EXTRACT(HOUR from time_inserted) AS hour,
  EXTRACT(MINUTE from time_inserted) AS minute
FROM `DONATION`
WHERE `time_inserted` > '2012-12-07 10:00:00' 
AND `donation_type` = 'em1'
GROUP BY year, month, day, hour, minute;
票数 6
EN

Stack Overflow用户

发布于 2012-12-07 16:02:46

不如:

代码语言:javascript
复制
SELECT sum(donation_amount), DATE_FORMAT(time_inserted, '%Y-%m-%d %H-%i') as dates, time_inserted FROM `donation`
group by dates
order by dates asc
票数 5
EN

Stack Overflow用户

发布于 2012-12-07 10:41:13

试试这个:

代码语言:javascript
复制
SELECT IFNULL(donation_type, 'Total') donation_type, 
       DATE_FORMAT(time_inserted, '%Y-%m-%d %H-%i') insertTime, 
       SUM(donation_amount), 
       COUNT(donation_type)
FROM `DONATION` 
WHERE `donation_type` = 'em1' 
GROUP BY insertTime WITH ROLLUP;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13761338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档