MySQL:按日期时间分组(小时 - 日 - 月 - 年)

时间:2016-11-30 14:04:12

标签: mysql datetime

我有这种形式的表格 enter image description here

我想计算类型=" non_repondu"并按3个标准对结果进行分组。

  

1的client_id

     

2-queue_id

     

     

3-日期时间:按小时,天,按月和按年

到目前为止,我已经这样做了:

SELECT `client_id`,`queue_id`,`datetime`,COUNT(`type`)
AS nombre_appels_repondus
FROM `appels`
where `type`= "non_repondu" 
group by `appels`.`client_id`,`appels`.`queue_id`,`appels`.`datetime

enter image description here

  

但是就像我刚刚按完整日期时间列过滤了这个结果   分别列出每个唯一的日期时间表,如何按小时获得结果   ,日,月和年???

3 个答案:

答案 0 :(得分:2)

在group By子句中使用DATE_FORMATE()。希望它能解决你的问题

SELECT
    `client_id`,
    `queue_id`,
    `datetime`,
    COUNT(`type`) AS nombre_appels_repondus
FROM
    `appels`
WHERE
    `type` = "non_repondu"
GROUP BY
    `appels`.`client_id`,
    `appels`.`queue_id`,
    DATE_FORMAT(
        `appels`.`datetime`,'%Y-%m-%d %H');

如果您想在日,月,年和小时中添加所选列列表,请尝试使用

SELECT
    `client_id`,
    `queue_id`,
    `datetime`,
    DATE_FORMAT(`appels`.`datetime`, '%Y-%m-%d') AS DAY,
    DATE_FORMAT(`appels`.`datetime`, '%Y-%m') AS MONTH,
    DATE_FORMAT(`appels`.`datetime`, '%Y') AS YEAR,
    DATE_FORMAT(`appels`.`datetime`, '%H') AS HOUR,
    COUNT(`type`) AS nombre_appels_repondus
FROM
    `appels`
WHERE
    `type` = "non_repondu"
GROUP BY
    `appels`.`client_id`,
    `appels`.`queue_id`,
    DATE_FORMAT(
        `appels`.`datetime`,
        '%Y-%m-%d %H'
    );

答案 1 :(得分:0)

您需要更准确地按照声明

进行分组
SELECT `client_id`,`queue_id`,`datetime`,COUNT(`type`)
AS nombre_appels_repondus
FROM `appels`
WHERE `type`='non_repondu'
GROUP BY `appels`.`client_id`,
    `appels`.`queue_id`,
    YEAR(`appels`.`datetime`) ,
    MONTH(`appels`.`datetime`),
    DAY(`appels`.`datetime`),
    HOUR(`appels`.`datetime`)

答案 2 :(得分:0)

updaters = {
  '90': updatevalues90,
  '180': updatevalues180,
  '270': updatevalues270
}

def do_update(a):
    ROT = [updaters[ROTATE](char) for char in a]
    # return ROT   ?