【问题标题】:Sum per day, week and month每天、每周和每月的总和
【发布时间】:2017-02-06 20:53:01
【问题描述】:

我确实有一个表,其中包含一个名为“小时”的字段,该字段是我的工人每天工作的时间,它为每天创建一个新注册表,所以它是这样的:

Date: 2017-02-06; hours: 3
Date: 2017-02-07; hours: 8
Date: 2017-02-31; hours: 8

问题是,我如何选择来汇总这一天(已经解决)、本周和本月的所有小时数。

我的期望是这样的:

今天的总和(2017-02-06):3

本周总和(2017-02-06-2017--2017-02-12):11

本月(2月)总和:19

原始查询:

$db->query("select sum(hours) horasDia from table_hours where                                                            
user="'.$user.'" and DATE(inici)=date('Y-m-d'));

我是通过 php 来做的。

编辑: 有了rahul_m的回答:

一天,

SELECT    SUM(`hours`) horasDia
FROM      table_hours 
WHERE     user="'.$user.'" and DATE(inici)= your_date;

一周,

SELECT    SUM(`hours`) horasDia
FROM      table_hours 
WHERE     user="'.$user.'" and DATE(inici)= your_date;
GROUP BY  WEEK(your_date);

一个月

SELECT    SUM(`hours`) horasDia
FROM      table_hours 
WHERE     user="'.$user.'" and DATE(inici)= your_date;
GROUP BY DATE_FORMAT(your_date, "%m-%Y"); 

在周部分它只给我日期 2017-01-31(2017-01-30 周)的小时数

SELECT    SUM(`hours`) horasDia
FROM      table_hours 
WHERE     user="'.$user.'" and DATE(inici)= "2017-01-31";
GROUP BY  WEEK("2017-01-31");

在月份部分,它什么也没给我。

SELECT    SUM(`hours`) horasDia
FROM      table_hours 
WHERE     user="'.$user.'" and DATE(inici)= "2017-01-31";
GROUP BY DATE_FORMAT("2017-01-31", "%m-%Y"); 

也许我做错了什么。

【问题讨论】:

  • 请提供样本数据和预期输出
  • 并显示您的查询(按天)
  • 那个日期的星期会给出日期的数据只属于那一天,我希望我清楚,
  • 我明白了!这是我的错误 t.t

标签: php mysql


【解决方案1】:

一天,

SELECT    SUM(`hours`) horasDia
FROM      table_hours 
WHERE     user="'.$user.'" and DATE(inici)= your_date;

一周,

SELECT    SUM(`hours`) horasDia
FROM      table_hours 
WHERE     user="'.$user.'" and DATE(inici)= your_date;
GROUP BY  WEEK(your_date);

一个月

SELECT    SUM(`hours`) horasDia
FROM      table_hours 
WHERE     user="'.$user.'" and DATE(inici)= your_date;
GROUP BY  YEAR(o_date), MONTH(o_date)

您将根据您的要求获得所有三个详细信息, 试一试。

编辑

星期的相关数据是正确的,因为它只给出了当周的所有数据。

几个月,

一个月

SELECT    SUM(`hours`) horasDia
FROM      table_hours 
WHERE     user="'.$user.'" and DATE(inici)= your_date;
GROUP BY  YEAR(your_date), MONTH(your_date)

【讨论】:

  • 感谢您的回答,但到目前为止它对我不起作用,本周 where 子句中使用的数据与 group by 中使用的数据相同?并且它不起作用我的意思是在一周内它做得不好总和,而在一个月内它什么也没显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 2016-02-27
  • 1970-01-01
  • 2018-12-19
  • 2012-12-08
  • 1970-01-01
相关资源
最近更新 更多