retornar de uma consulta mysql, uma quantidade x de linhas para determinado registro de uma coluna

MySQL

26/06/2015

ola.
Preciso finalizar minha query, porém não estou conseguindo limitar as linhas a serem retornadas.
Eu tenho uma tabela com varias colunas onde uma delas é o 'setor'. Preciso que a consulta retorne apenas 3 linhas para cada setor.

Abaixo segue o código da consulta que desenvolvi, porem não sei como aplicar essa limitação de linhas para o setor. Se puderem me ajudar, desde já agradeço!

Obs: Utilizo o MySql
link do sql_fiddle onde construi uma pequena tabela para testar e exemplificar : http://sqlfiddle.com/#!9/4e4ef/3

SELECT 
    *
FROM
    servicos_encerrados
WHERE
     atividade in("INST ADSL","INST FIXO")
Gisely Santos

Gisely Santos

Curtidas 0

Respostas

Randrade

Randrade

26/06/2015

Bom Gisely, você pode utilizar uma Sub Consulta para retornar os dados, e fazer uma cláusula no WHERE para limitar a quantidade. Ficaria assim o seu código:

    SELECT 
    id, estado_atividade, macro_atividade, inicio_execucao, fim_execucao,
    nome_cliente, setor
FROM
(
    SELECT
         id, estado_atividade, macro_atividade, inicio_execucao, fim_execucao,
    nome_cliente, setor,
        @rn := IF(@prev = setor, @rn + 1, 1) AS rn,
        @prev := setor
    FROM servicos_encerrados
    JOIN (SELECT @prev := NULL, @rn := 0) AS vars
    ORDER BY setor
) AS T1
WHERE rn <= 3


Segue um exemplo no SqlFiddle.

No WHERE <= 3 (menor ou igual a 3), você limita a quantidade de dados que irão retornar por setor (que dei o alias de rn).
Caso não seja isso que queira, ou precise de mais explicação, basta avisar.
GOSTEI 0
Gisely Santos

Gisely Santos

26/06/2015

Olha, na verdade funcionou perfeitamente. Mas a nível de conhecimento poderia se possível me explicar o código? Principalmente a parte da utilização das variáveis na sub consulta? Desde já agradeço muitíssimo!
GOSTEI 0
POSTAR