utf8_unicode_ci - not in mysql ejemplo
Los usuarios seleccionados tienen más de un registro distinto en mysql (3)
Para una tabla que contiene los registros del comportamiento de visitas de las páginas web de los usuarios, ¿cómo puedo seleccionar los usuarios que visitan más de una página web?
La estructura de estas tablas es:
userId webpageId visitTime
0 123 ...
0 124 ...
1 123 ...
... ... ...
Puedo contar usando:
SELECT userId, COUNT(DISTINCT webpageId) AS count FROM visits GROUP BY userId;
Me da el resultado como:
userId count
0 2
1 1
2 6
... ...
¿Cómo puedo calcular la consulta que me da el resultado final como:
userId
0
2
...
Cada usuario es el que visita más de una página web DISTINCT
Prueba esto:
SELECT userId, COUNT(DISTINCT webpageId) AS count FROM visits GROUP BY userId
having COUNT(DISTINCT webpageId) > 1
Más: HAVING
Si bien HAVING
es un buen enfoque en este caso, recuerde que las consultas se pueden anidar:
SELECT userId, pageCount
FROM (
SELECT userId, COUNT(DISTINCT webpageId) AS pageCount
FROM visits
GROUP BY userId) AS n
WHERE pageCount > 1
Los planes de consulta reales pueden diferir, especialmente si HAVING
es un caso optimizado, pero no hay razón para que los planes deban ser diferentes. (Compare los planes en la versión / RDBMS específica si es un problema o inquietud).
sólo tiene que añadir la cláusula de tener
SELECT userId, COUNT(DISTINCT webpageId) AS count
FROM visits
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1
pero si solo lo que el ID
SELECT userId
FROM visits
GROUP BY userId
HAVING COUNT(DISTINCT webpageId) > 1
La razón por la que está filtrando en la cláusula HAVING
y no en WHERE
es porque, la cláusula WHERE
no puede admitir columnas que se agregaron .