【问题标题】:Group by hour and date按小时和日期分组
【发布时间】:2016-09-13 02:22:45
【问题描述】:

我不想在这里问一个问题,因为我知道它已经完成(稍微),但是由于字段格式,我的问题略有不同。我在连接和小时选择等方面尝试了很多东西,但我被卡住了。想要一个快速的手。

我有一个这样的 MySQL 表:

CREATE TABLE `VAT` (
  `VATid` int(11) NOT NULL AUTO_INCREMENT,
  `VATDate` date DEFAULT NULL,
  `VATTime` varchar(10) DEFAULT NULL,
  `VATPledgeAmount` float DEFAULT NULL, 
  PRIMARY KEY (`VATid`),
  UNIQUE KEY `VATid_UNIQUE` (`VATid`)
) ENGINE=MyISAM AUTO_INCREMENT=6531 DEFAULT CHARSET=latin1;

问题在于 VATDate 字段的日期格式为 YYYY-MM-DD,而 VATTime 字段是带有前导零的 HHMM,如下表中的一些示例数据所示。

样本表数据:

VATid   | VATDate    | VATTime | VATPledgeAmount |
--------------------------------------------------
1       | 2016-06-30 | 0730    | 100             |
2       | 2016-06-30 | 0733    | 20              |
3       | 2016-06-30 | 0840    | 70              |
4       | 2016-06-30 | 0943    | 100             |
5       | 2016-06-30 | 0730    | 50              |
6       | 2016-07-01 | 2113    | 50              |
7       | 2016-07-01 | 2302    | 300             |
8       | 2016-07-02 | 0416    | 10              |
9       | 2016-07-02 | 0417    | 10              |
10      | 2016-07-02 | 0418    | 10              |

我想要做的是让 MySQL 服务器为我进行计算,这样当数据出来时,日期仍然会显示出来,但是每个小时的 PledgeAmount 的总值会被汇总和分组。

Counts | g_VATDate  | g_VATTime | Total_VATPledgeAmount |
--------------------------------------------------
2      | 2016-06-30 | 0700      | 120              |
1      | 2016-06-30 | 0800      | 70               |
1      | 2016-06-30 | 0900      | 100              |
1      | 2016-07-01 | 2100      | 50               |
1      | 2016-07-01 | 2300      | 300              |
3      | 2016-07-02 | 0400      | 30               | 

我希望这是有道理的。我打算将其用于 JS 图表,但由于我不需要或不想要个人承诺及其金额值,我只需要每小时的金额和总数。

【问题讨论】:

  • 你如何计算VATPledgeAmount
  • 它实际上是一个美元值,所以在我的最后一个等式中,我想要它们所属小时的这些值的总和..
  • 下次,记得将日期和时间存储为单个实体。并将钱存储为十进制!
  • 感谢您的提示! :)

标签: mysql date time group-by


【解决方案1】:

您可以使用concat(left(VATTime, 2), '00') 获取小时:

select count(VATid) counts, VATDate g_VATDate, 
  concat(left(VATTime, 2), '00') g_VATTime, 
  sum(VATPledgeAmount) Total_VATPledgeAmount
from VAT
group by g_VATDate, g_VATTime;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 2017-04-14
    • 2019-01-07
    • 2020-10-26
    • 2015-05-07
    • 1970-01-01
    • 2014-05-02
    相关资源
    最近更新 更多