Tengo una base de datos que contiene ID de sesión y nombres de página. Me gustaría obtener una lista de los ID de sesión a los que el usuario fue a las 4 páginas de 'Carrito', 'UserInfo', 'Pagar' y 'Confirmar'.
Supongamos que nuestra mesa es así:
Sessionid, PageName
939j , Home
9d3k , Login
e9se , Cart
efw0 , Checkout
e9se , UserInfo
Etcetera...
¿Alguna sugerencia sobre cómo hacer algo como esto?
2 respuestas
Puede utilizar:
select sessionid
from t
group by sessionid
having count(distinct pagename) = 4
Lo anterior asume que los cuatro nombres de página que mencionó son los únicos. Si hay otros, filtre antes de agregar:
select sessionid
from t
where pagename in ('Cart','UserInfo','Checkout', 'Confirm')
group by sessionid
having count(distinct pagename) = 4
Si 'Cart', 'UserInfo', 'Checkout' y 'Confirm' son todos los nombres de página distintos en la tabla, entonces agrupe por sessionid y establezca la condición en la cláusula HAVING
:
SELECT sessionid
FROM tablename
GROUP BY sessionid
HAVING COUNT(DISTINCT pagename) = (SELECT COUNT(DISTINCT pagename) FROM tablename)
Nuevas preguntas
sql
El lenguaje de consulta estructurado (SQL) es un lenguaje para consultar bases de datos. Las preguntas deben incluir ejemplos de código, estructura de tabla, datos de muestra y una etiqueta para la implementación de DBMS (por ejemplo, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, etc.) que se utiliza. Si su pregunta se relaciona únicamente con un DBMS específico (usa extensiones / características específicas), use la etiqueta de ese DBMS en su lugar. Las respuestas a las preguntas etiquetadas con SQL deben usar SQL estándar ISO / IEC.