none
consulta com quantidade determinada RRS feed

  • Pergunta

  • Bom dia

    Tenho um banco de dados em SQL com uma grande quantidade de pedidos e preciso fazer uma consulta que me retorne 10 pedidos de cada cidade.

    os campos do meu banco são : ID_CLIENTE, NRO_PEDIDO, CIDADE, UF

    Existe uma forma simples de trazer essa quantidade de cada cidade sem ter q consultar uma a uma?

    obrigado

     

    sexta-feira, 2 de setembro de 2016 14:54

Respostas

  • sim.. usando o With:

    WITH TOPTENCidades AS (
        SELECT *, ROW_NUMBER() 
        over (
            PARTITION BY [CIDADE] order by [CIDADE])AS RowNo 
        FROM [PEDIDOS]) SELECT * FROM TOPTENCidades WHERE RowNo <=10

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------




    sexta-feira, 2 de setembro de 2016 14:59

Todas as Respostas

  • sim.. usando o With:

    WITH TOPTENCidades AS (
        SELECT *, ROW_NUMBER() 
        over (
            PARTITION BY [CIDADE] order by [CIDADE])AS RowNo 
        FROM [PEDIDOS]) SELECT * FROM TOPTENCidades WHERE RowNo <=10

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------




    sexta-feira, 2 de setembro de 2016 14:59
  • Eu gosto muito de usar CTEs não recursiva segue um exemplo 

    IF ( OBJECT_ID('TEMPDB..#Pedidos') IS NOT NULL )
        DROP TABLE #Pedidos;	
    
    CREATE TABLE #Pedidos
        (
          ID_CLIENTE INT NOT NULL ,
          NRO_PEDIDO INT,
    	  Valor DECIMAL(18,2),
    	  CIDADE VARCHAR(MAX)
    	  
        );
    
    INSERT INTO #Pedidos ( ID_CLIENTE, NRO_PEDIDO,Valor ,CIDADE) 
    		VALUES  (1,1,10,'Brasilia'),
    			(1,2,20,'Brasilia'),
    			(1,3,30,'São Paulo'),
    			(1,4,10,'Brasilia'),
    			(1,5,30,'São Paulo'),
    			(1,6,30,'Brasilia'),
    			(1,7,30,'Brasilia'),
    			(1,8,30,'Brasilia'),
    			(1,9,30,'Brasilia'),
    			(1,10,30,'Brasilia'),
    			(1,11,30,'São Paulo'),
    			(1,12,30,'São Paulo'),
    			(1,13,30,'São Paulo');
    
    
    			with CTENaoRecursiva AS 
    				(
    				SELECT P.ID_CLIENTE ,
                           P.NRO_PEDIDO ,
                           P.Valor ,
    					   Orden = ROW_NUMBER() OVER(PARTITION BY p.CIDADE ORDER BY p.Valor),
                           P.CIDADE FROM #Pedidos AS P
    				) 
    				
    				
    SELECT * FROM CTENaoRecursiva C
    WHERE C.Orden < 10 AND C.CIDADE ='Brasilia'


    Wesley Neves


    • Editado Wesley Neves sexta-feira, 2 de setembro de 2016 15:13 erro
    sexta-feira, 2 de setembro de 2016 15:12
  • Deleted
    sexta-feira, 2 de setembro de 2016 15:33
  • Deleted
    sexta-feira, 2 de setembro de 2016 15:37
  • @José,

    Novas normas do governo Canadense... Agora somos obrigados à nao desperdiçar espaços vazios. :P

    Sei lá o que aconteceu.. no colar todos os espaço foram retirados...

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sexta-feira, 2 de setembro de 2016 15:45
  • QUAIS QUER 10

    sexta-feira, 2 de setembro de 2016 16:41
  • Valew, Willian

    funcionou para o que eu precisava

    abs

    sexta-feira, 2 de setembro de 2016 16:55