按字符串计数并按小时分组

时间:2017-08-05 06:31:42

标签: mysql count

我的数据库中有一个表有问题,我必须查询表。

我想从卡片状态获取 ACTIVATED 的计数,并按照所需的分支和小时分组...

你能帮助我让我的查询工作吗?

这是我的疑问:

SELECT
    DATE_FORMAT(DATE_VERIFIED, '%H') AS hour,
    COUNT(CARD_STATUS) AS California
FROM customer
WHERE
    CARD_STATUS = 'ACTIVATED' AND 
    DESIRED_BRANCH = 'California'
GROUP BY hour  

我的查询只能获得加利福尼亚州......我也希望得到其他城市。

这是表格。

enter image description here

以下是所需的输出

enter image description here

3 个答案:

答案 0 :(得分:1)

你只得到加利福尼亚,因为DESIRED_BRANCH ='加利福尼亚'。如果你想按小时计算活跃的Card_Status组,并且你的查询必须看起来像所需的分支

SELECT DATE_FORMAT(DATE_VERIFIED, '%H') as `hour`, COUNT(CARD_STATUS) as 
`Number_Active` FROM `customer` where CARD_STATUS = 'ACTIVATED' 
group by `hour`,branch

答案 1 :(得分:0)

在where子句中提到DESIRED_BRANCH = 'California'可能会出错。您的查询应如下所示

SELECT DATE_FORMAT(DATE_VERIFIED, '%H') as `hour`, DESIRED_BRANCH, COUNT(CARD_STATUS) as 
`Count` FROM `customer` where CARD_STATUS = 'ACTIVATED' group by `hour`,DESIRED_BRANCH

根据需要,这将按hourDESIRED_BRANCH进行分组。如果要将DESIRED_BRANCH包含在group by子句中,则必须获得{{1}}。

答案 2 :(得分:0)

SELECT active_california_hours.hour, COUNT(*) 
FROM (  SELECT DATE_FORMAT(DATE_VERIFIED, '%H') as `hour` 
    FROM `customer` 
    where   
    CARD_STATUS = 'ACTIVATED' 
    and DESIRED_BRANCH = 'California') active_california_hours
GROUP BY hour