简体   繁体   English

优化SQL查询以获取计数(*)

[英]Refine a SQL query for getting count(*)

I have the following query that gets some results I would like to group by attribute 'state'. 我有以下查询,可以得到一些我想按属性“状态”分组的结果。 I tried different subquery but they didn't work and I'm a bit blocked. 我尝试了不同的子查询,但它们无法正常工作,我有点受阻。 The SQL is: SQL是:

    SELECT state, id_candidate_basic, MAX( DATE )  FROM `candidate_state` 
    WHERE `date` <= '2013-09-06 00:00:00' GROUP BY id_candidate_basic
    ORDER BY `candidate_state`.`id_candidate_basic` DESC

This returns currently: 当前返回:

在此处输入图片说明

I would get a count(*) for each state. 我将获得每个状态的count(*)。 Example: F, 14 I, 10 O, 9 例如:F,14 I,10 O,9

SELECT  state, 
        id_candidate_basic, 
        MAX( DATE ),
        COALESCE(totalCount, 0) totalCount
FROM    `candidate_state` 
        LEFT JOIN 
        (
            SELECT  state, COUNT(*) totalCount
            FROM    candidate_state
            WHERE   `date` <= '2013-09-06 00:00:00' 
            GROUP   BY state
        )   ON candidate_state.state = b.state
WHERE   `date` <= '2013-09-06 00:00:00' 
GROUP   BY id_candidate_basic
ORDER   BY `candidate_state`.`id_candidate_basic` DESC

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM