Multiple COUNT() for multiple conditions in one query (MySQL)

后端 未结 6 1318
迷失自我
迷失自我 2021-02-01 02:53

I have these queries :

SELECT COUNT(*) FROM t_table WHERE color = \'YELLOW\';
SELECT COUNT(*) FROM t_table WHERE color = \'BLUE\';
SELECT COUNT(*) FROM t_table W         


        
相关标签:
6条回答
  • 2021-02-01 03:24

    I think this can also works for you

    select count(*) as anc,(select count(*) from Patient where sex='F')as 
            patientF,(select count(*) from Patient where sex='M') as patientM from anc
    

    you can also even select and count related tables like this

    select count(*) as anc,(select count(*) from Patient where 
        Patient.Id=anc.PatientId)as patientF,(select count(*) from Patient where
        sex='M') as patientM from anc
    
    0 讨论(0)
  • 2021-02-01 03:29

    This is my answer: Este Ejemplo SQL Indica la cantidad de un Grupo y Suma los encontrado con S y N por separado. Se que no es la Respuesta pero puede ser usado para otros casos. Bendito sea Israel.

    SELECT sm_med_t_servicios.id as identidad, count(sm_adm_t_admision.id) as cantidad , 
    SUM(IF(sm_adm_t_admision.atendido = 'S', 1, 0)) AS atendidos,
    SUM(IF(sm_adm_t_admision.atendido = 'N', 1, 0)) AS por_ver
    
    FROM sm_med_t_servicios 
    LEFT JOIN sm_adm_t_admision ON sm_med_t_servicios.id = sm_adm_t_admision.sm_med_t_servicios_id
    WHERE sm_med_t_servicios.m_empresas_id = '2'
    GROUP BY sm_med_t_servicios.id
    

    I hope this helps you.

    0 讨论(0)
  • 2021-02-01 03:30
    SELECT 'yellow' as color ,COUNT(*) FROM t_table WHERE color = 'YELLOW'
    union
    SELECT 'blue' , COUNT(*) FROM t_table WHERE color = 'BLUE'
    union
    SELECT 'red',COUNT(*) FROM t_table WHERE color = 'RED';
    

    or

    select color, count(*) from table where color in ('red', 'blue', 'yellow') group by 1
    
    0 讨论(0)
  • 2021-02-01 03:35
    SELECT color, COUNT(*) FROM t_table GROUP BY color
    
    0 讨论(0)
  • 2021-02-01 03:44

    If you want the result to be in one row you can use:

    SELECT
        SUM(IF(color = 'YELLOW', 1, 0)) AS YELLOW,
        SUM(IF(color = 'BLUE', 1, 0)) AS BLUE,
        SUM(IF(color = 'RED', 1, 0)) AS RED
    FROM t_table
    

    Working example

    0 讨论(0)
  • 2021-02-01 03:51

    You can do this using subquery.

    SELECT(
        SELECT COUNT(*) FROM t_table WHERE color = 'YELLOW',
        SELECT COUNT(*) FROM t_table WHERE color = 'BLUE',
        SELECT COUNT(*) FROM t_table WHERE color = 'RED'
    );
    
    0 讨论(0)
提交回复
热议问题