2010-07-16 16 views
23

Me gustaría insertar un SELECT dentro de un COUNT, pero no puedo encontrar ningún ejemplo.SELECCIONAR dentro de un COUNT

#pseudosql 
SELECT a AS current_a, COUNT(*) AS b, 
    COUNT(SELECT FROM t WHERE a = current_a AND c = 'const') as d, 
    from t group by a order by b desc 

Respuesta

31

Usted realmente no necesita un sub-select:

SELECT a, COUNT(*) AS b, 
    SUM(CASE WHEN c = 'const' THEN 1 ELSE 0 END) as d, 
    from t group by a order by b desc 
+4

+1 Esto aborda la consulta específica de OP de una manera más eficiente. Yo usaría 'IF()' en lugar de 'CASE' ya que solo hay 2 estados, pero eliminar la subconsulta es lo correcto. –

18

Puede mover el conteo() dentro de su sub-select:

SELECT a AS current_a, COUNT(*) AS b, 
    (SELECT COUNT(*) FROM t WHERE a = current_a AND c = 'const') as d, 
    from t group by a order by b desc 
+0

ello, seleccione el interior de una cuenta de un error de sintaxis en SQL? – Ahmad

+1

@Ahmad es correcto, al menos para MySQL. –

1

Uso SELECT COUNT(*) FROM t WHERE a = current_a AND c = 'const') as d.

0
SELECT a AS current_a, COUNT(*) AS b, 
    (SELECT COUNT(*) FROM t WHERE a = current_a AND c = 'const') as d 
    from t group by a order by b desc 
Cuestiones relacionadas