none
Exibe apenas um resultado da primeira coluna RRS feed

  • Pergunta

  • Gostaria de fazer uma query que exiba quem é o usuário que mais loga em determinada estação.

    Para isto criei a tabela abaixo:

    CREATE TABLE [dbo].[LogON](
    	[Usuario] [varchar](20) NOT NULL,
    	[Computador] [varchar](15) NOT NULL,
    	[Logon] [datetime] NOT NULL,
    ) 
    GO
    
    -- INSERIR VALORES
    INSERT INTO [LogON](Usuario,Computador,Logon) VALUES ('FABIO','W0001','10/26/2011 17:57:11')
    INSERT INTO [LogON](Usuario,Computador,Logon) VALUES ('FABIO','W0001','10/25/2011 17:57:11')
    INSERT INTO [LogON](Usuario,Computador,Logon) VALUES ('FAGNER','W0001','10/24/2011 17:57:11')
    INSERT INTO [LogON](Usuario,Computador,Logon) VALUES ('PAULA','W0002','10/23/2011 17:57:11')
    INSERT INTO [LogON](Usuario,Computador,Logon) VALUES ('PAULA','W0002','10/24/2011 17:57:11')
    GO
    
    -- SELECIONA
    select Computador,Usuario,count(*) as Qtd from LOGON GROUP BY Computador,Usuario
    
    Computador      Usuario              Qtd
    --------------- -------------------- -----------
    W0001           FABIO                2
    W0001           FAGNER               1
    W0002           PAULA                2
    
    (3 row(s) affected)
    

    Gostaria de ter uma query que me retornasse o seguinte resultado:

    Computador      Usuario              Qtd
    --------------- -------------------- -----------
    W0001           FABIO                2
    W0002           PAULA                2
    
    


    Isto é, uma linha para cada computador com o nome do usuário que mais efetuou logon.

    Observações:

    1. Caso houver empate pode mostrar os dois
    2. Não preciso exibir a coluna Qtd, ela só me serve para conferência.

     


    Fábio de Paula Junior
    quarta-feira, 26 de outubro de 2011 18:08

Respostas

  • FAbio

    segue um modo para sql Server 2005 ou superior

    declare @LogON as table(
    	[Usuario] [varchar](20) NOT NULL,
    	[Computador] [varchar](15) NOT NULL,
    	[Logon] [datetime] NOT NULL
    ) 
    -- INSERIR VALORES
    INSERT INTO @LogON (Usuario,Computador,Logon) VALUES ('FABIO','W0001','10/26/2011 17:57:11')
    INSERT INTO @LogON (Usuario,Computador,Logon) VALUES ('FABIO','W0001','10/25/2011 17:57:11')
    INSERT INTO @LogON (Usuario,Computador,Logon) VALUES ('FAGNER','W0001','10/24/2011 17:57:11')
    INSERT INTO @LogON (Usuario,Computador,Logon) VALUES ('PAULA','W0002','10/23/2011 17:57:11')
    INSERT INTO @LogON (Usuario,Computador,Logon) VALUES ('PAULA','W0002','10/24/2011 17:57:11')
    ;with cte_dados
    as
    (
    select ROW_NUMBER() over (partition by Computador  order by Computador,count(1) desc) as 'numerador',  Computador,Usuario,count(*) as Qtd 
    from @LogON 
    GROUP BY Computador,Usuario 
    )
    
    select Computador,Usuario,Qtd from cte_dados where numerador=1
    

     


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta Fábio Jr quarta-feira, 26 de outubro de 2011 23:56
    quarta-feira, 26 de outubro de 2011 20:03