Tengo estructura de tabla como se muestra en la primera tabla.¿Cómo optimizar esto en MySQL?
Y desea obtener recuentos masculinos y femeninos en una sola consulta para que la solicitud vaya solo una vez al servidor.
Tengo estructura de tabla como se muestra en la primera tabla.¿Cómo optimizar esto en MySQL?
Y desea obtener recuentos masculinos y femeninos en una sola consulta para que la solicitud vaya solo una vez al servidor.
Esto es lo que hay que hacer:
select gender,
count(case when age between 0 and 20 then 1 else null end) Age_0_20,
count(case when age between 21 and 40 then 1 else null end) Age_21_40
from yourtable
group by gender
Ajuste de conformidad :)
actualización, con aclaraciones
Tenga en cuenta que COUNT
función de agregado no solamente las cuentas -null valores. Por lo tanto, los valores else
en case
deben ser NULL
. El valor When
devuelve 1
pero podría ser cualquier valor no nulo.
Algunas personas implementar esto usando SUM
:
select gender,
sum(case when age between 0 and 20 then 1 else 0 end) Age_0_20,
sum(case when age between 21 and 40 then 1 else 0 end) Age_21_40
from yourtable
group by gender
El resultado va a ser absolutamente el mismo.
su error regresar ** # 1064 - Usted tiene un error en! su sintaxis SQL; revise el manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de 'que 1 else 0 final) Age_0_19, suma (caso cuando tiene entre 20 y 40 años de edad que 1 e' en la línea 2 ** – Thompson
¿Acaba de escribir ' que 'en lugar de 'entonces'? –
¡Ups! Lo siento, escribí ** que ** en lugar de ** luego ** porque ya estaba dando error ** # 1064 - Usted tiene un error en su sintaxis de SQL; manual que corresponde a su versión del servidor MySQL para la sintaxis correcta para usar cerca de 'grupo por género' en la línea 4 ** – Thompson
Tenga en cuenta que sé cómo recuperar todos los datos. Pero quiero hacer esto utilizando la optimización – Thompson
+1 Gracias por mostrar claramente la entrada y la salida deseada. – pilcrow
@pilcrow: Gracias. – Thompson