sacar moda mediana como calcular mysql case

moda - MySQL y CASE CUANDO con un rango de valores



sql mean function (2)

Necesita una sub-consulta. Si esta es una vista necesitas usar dos vistas entonces.

SELECT s.ct, s.grp FROM ( SELECT count(*) as ct, CASE WHEN COUNT(*) < 25 THEN ''1-25'' WHEN COUNT(*) >= 25 AND COUNT(*) < 50 THEN ''25-50'' WHEN COUNT(*) >= 50 AND COUNT(*) < 100 THEN ''50-100'' WHEN COUNT(*) >= 100 AND COUNT(*) < 250 THEN ''100-250'' WHEN COUNT(*) >= 250 AND COUNT(*) < 500 THEN ''250-500'' WHEN COUNT(*) >= 500 AND COUNT(*) < 1000 THEN ''500-1000'' ELSE ''1000+'' END AS grp FROM records r,accounts a WHERE r.account_id=a.id) as s Group BY s.grp;

Tengo una tabla de cuentas y una tabla de registros donde las cuentas tienen varios registros. Me gustaría desglosar los totales de la cuenta por rango de "conteo de registros". Es decir, mostrar el desglose de

Count of Records | Count ========================= 0-25 | 100 25 - 50 | 122 50 - 100 | 300

Etc.

Estoy usando la siguiente consulta, pero no puedo agruparla por "grp", que es lo que quiero. ¿Alguna ayuda sobre la mejor manera de modificar la consulta?

SELECT count(*) as ct, CASE WHEN COUNT(*) < 25 THEN ''1-25'' WHEN COUNT(*) >= 25 < 50 THEN ''25-50'' WHEN COUNT(*) >= 50 < 100 THEN ''50-100'' WHEN COUNT(*) >= 100 < 250 THEN ''100-250'' WHEN COUNT(*) >= 250 < 500 THEN ''250-500'' WHEN COUNT(*) >= 500 < 1000 THEN ''500-1000'' ELSE ''1000+'' END AS grp FROM records r,accounts a WHERE r.account_id=a.id ORDER BY ct


prueba esto:

SELECT count(*) as ct, CASE WHEN COUNT(*) < 25 THEN ''1-25'' WHEN COUNT(*) >= 25 < 50 THEN ''25-50'' WHEN COUNT(*) >= 50 < 100 THEN ''50-100'' WHEN COUNT(*) >= 100 < 250 THEN ''100-250'' WHEN COUNT(*) >= 250 < 500 THEN ''250-500'' WHEN COUNT(*) >= 500 < 1000 THEN ''500-1000'' ELSE ''1000+'' END AS grp FROM records r, accounts a WHERE r.account_id=a.id GROUP BY r.account_id, a.id, CASE WHEN COUNT(*) < 25 THEN ''1-25'' WHEN COUNT(*) >= 25 < 50 THEN ''25-50'' WHEN COUNT(*) >= 50 < 100 THEN ''50-100'' WHEN COUNT(*) >= 100 < 250 THEN ''100-250'' WHEN COUNT(*) >= 250 < 500 THEN ''250-500'' WHEN COUNT(*) >= 500 < 1000 THEN ''500-1000'' ELSE ''1000+'' END ORDER BY count(*)

Debe "definir" los "grupos" en los que desea agregar las filas de datos originales en ... Esto es lo que significa la cláusula Agrupar por ... Define los criterios según los cuales se analizará cada fila de las tablas base para determine en qué "grupo" se agregarán los datos en ... La expresión o expresiones definidas en el grupo por cláusula son las "definiciones" para esos grupos.

A medida que la consulta procesa las filas de datos originales, cualquier fila para la cual los valores de esta (s) expresión (s) son iguales a un grupo existente se agrega a ese grupo ... Cualquier fila nueva con un valor no representado por un existente cubo hace que se cree un nuevo cubo ...