Durante el uso ... ¿Tiene COUNT (*) = (... MAX() ..) funciona:
- Dentro de la consulta, necesita casi la misma sub consulta dos veces.
- Para la mayoría de las bases de datos, necesita una subconsulta de segundo nivel ya que MAX (COUNT (*)) no es compatible.
Durante el uso de TOP/LIMIT/RANK etc funciona:
- Se utiliza extensiones de SQL para una base de datos específica.
Además, usar TOP/LIMIT de 1 solo dará una fila, ¿y si hay dos o más médicos con el mismo número máximo de pacientes?
Me romper el problema en pasos:
campo Get objetivo (s) y el recuento asociado
SELECT docName, COUNT(patient) AS countX
FROM doctor
GROUP BY docName
Utilizando lo anterior como una, se unen para conseguir la 'declaración view con ámbito' fila max count (s)
WITH x AS
(
SELECT docName, COUNT(patient) AS countX
FROM doctor
GROUP BY docName
)
SELECT x.docName, x.countX
FROM x
INNER JOIN
(
SELECT MAX(countX) AS maxCountX
FROM x
) x2
ON x2.maxCountX = x.countX
La cláusula WITH, que define un 'sco declaración ped view ', proporciona efectivamente subconsultas con nombre que pueden reutilizarse dentro de la misma consulta.
El JOIN coincide con la (s) fila (s) del recuento máximo de los pacientes.
Si bien esta solución, utilizando puntos de vista de los estados de ámbito, es más largo, que es:
- fácil poner a prueba
- autodocumentado
- extensible
Es fácil poner a prueba como partes de la consulta se puede ejecutar de forma independiente.
Es auto documentado, ya que la consulta refleja directamente el requisito es decir, la vista del alcance de la declaración enumera el (los) campo (s) de destino y el recuento asociado.
Se puede extender como si se necesitaran otras condiciones o campos, esto se puede agregar fácilmente a la vista con ámbito de declaración. por ejemplo, en este caso, la estructura de la tabla debe cambiarse para incluir un id. De doctor como campo de clave principal y esto debería ser parte de los resultados.
¿Qué producto de base de datos y la versión? – Thomas
Es difícil ayudar sin saber con qué base de datos estamos trabajando, como sugirió @Thomas. –
¿Usted nombró a su tabla de pacientes como "autor"? ¿Cómo se ve el esquema de la tabla "paciente"? – Thomas