Estoy bastante seguro de que no podemos usar la cláusula LIMIT para lo que quiero hacer, así que queríamos saber si hay otras maneras en que podamos lograr esto.Consulta SQL - Limitando los resultados de la consulta
Tengo una tabla que captura qué usuario visitó qué tienda. Cada vez que un usuario visita una tienda, se inserta una fila en esta tabla.
Algunos de los campos son
- shopping_id (clave principal)
- STORE_ID
- user_id
Ahora lo que quiero es - para un conjunto dado de tiendas, encontrar la parte superior 5 usuarios que han visitado la tienda un máximo de veces.
que pueda hacer esto 1 tienda a la vez como:
select store_id,user_id,count(1) as visits
from shopping
where store_id = 60
group by user_id,store_id
order by visits desc Limit 5
Esto me dará los 5 usuarios que han visitado STORE_ID = 60 los tiempos máximos
Lo que quiero hacer es proporcionar una lista de 10 store_ids y para cada tienda captar los 5 usuarios que visitaron esa tienda max times
select store_id,user_id,count(1) as visits
from shopping
where store_id in (60,61,62,63,64,65,66)
group by user_id,store_id
order by visits desc Limit 5
Esto no funcionará ya que el límite al final devolverá solo 5 filas en lugar de 5 filas para cada tienda.
Cualquier idea sobre cómo puedo lograr esto. Siempre puedo escribir un bucle y pasar de 1 tienda a la vez, pero quería saber si hay una mejor manera.
MySQL no tiene funciones analíticas - ROW_NUMBER, RANK , DENSE_RANK - que normalmente usarías para resolver situaciones como estas. –