it-swarm.com.de

Mehrere COUNT () für mehrere Bedingungen in einer Abfrage (MySQL)

Ich habe folgende Fragen:

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

Gibt es eine Möglichkeit, diese Ergebnisse in einer Abfrage zu erhalten?

29
TrtG
SELECT color, COUNT(*) FROM t_table GROUP BY color
51
eggyal

Wenn Sie möchten, dass das Ergebnis in einer Reihe steht, können Sie Folgendes verwenden:

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

Arbeitsbeispiel

37
eisberg
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';

oder

select color, count(*) from table where color in ('red', 'blue', 'yellow') group by 1
8
AdrianBR

Sie können dies mit einer Unterabfrage tun.

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'
);
1
Faisal

Ich denke, das kann auch für Sie funktionieren 

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

sie können auch verwandte Tabellen auf diese Weise auswählen und zählen 

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
Sinte

Dies ist meine Antwort: Este Ejemplo SQL-Suche in der Gruppe und in der Folge von S y N von separado . Sie haben keine Antwort auf diese Frage. Bendito See 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

Ich hoffe das hilft dir. 

0