none
Instrução select com porcentagem RRS feed

  • Pergunta

  • fala galera

    como faço uma instrução select com porcentagem por exemplo

    em uma sala de alunos saber a porcentagem que tirou nota abaixo de 5

    sabendo que existe a tabela aluno e a tabela nota.

    como é a sintaxe para isso

    valeu

    quarta-feira, 3 de dezembro de 2014 13:46

Respostas

  • Olá Junior,

    Minha maneira de montar foi essa...

    Só copiar o código e executar no seu SQL

    Se lhe foi útil, avalie!

    CREATE TABLE #TB_ALUNO(ID_ALUNO INT IDENTITY,
    NOME_ALUNO VARCHAR(20))
    INSERT INTO #TB_ALUNO
    	SELECT
    		'ANDERSON'
    INSERT INTO #TB_ALUNO
    	SELECT
    		'PEDRO'
    INSERT INTO #TB_ALUNO
    	SELECT
    		'ROBERVAL'
    INSERT INTO #TB_ALUNO
    	SELECT
    		'MARIA'
    	
    CREATE TABLE #NOTAS(ID_NOTA INT IDENTITY, ID_ALUNO INT, NOTA FLOAT)
    
    INSERT INTO #NOTAS
    	SELECT
    		1,
    		2.0
    		INSERT INTO #NOTAS
    	SELECT
    		2,
    		3.0
    		INSERT INTO #NOTAS
    	SELECT
    		3,
    		3.0
    
    
    INSERT INTO #NOTAS
    	SELECT
    		4,
    		7.0
    
    SELECT
    	A.ID_ALUNO,
    	A.NOME_ALUNO,
    	B.ID_NOTA,
    	B.NOTA INTO #TEMP_TOTAL
    FROM #TB_ALUNO A
    
    INNER JOIN #NOTAS B
    	ON (A.ID_ALUNO = B.ID_ALUNO)
    
    SELECT
    	C.NOME_ALUNO,
    	C.NOTA
    FROM #TEMP_TOTAL C
    UNION ALL
    SELECT '(%) ABAIXO DE 5',
    (SELECT ((SUM(CASE WHEN X.NOTA < 5 THEN 1 ELSE 0 END))/ CAST(COUNT(*) AS FLOAT) * 100) FROM #TEMP_TOTAL X)
    
    DROP TABLE #NOTAS
    DROP TABLE #TB_ALUNO
    DROP TABLE #TEMP_TOTAL

    []'s,

    Anderson


    Se o meu conteúdo resolveu o seu problema ou sua dúvida, então marque como "Resposta", ou se foi útil, "Vote". Pois isso ajudará outras pessoas com o mesmo problema ou dúvida.

    • Marcado como Resposta JuniorOSL quarta-feira, 3 de dezembro de 2014 17:35
    quarta-feira, 3 de dezembro de 2014 14:31

Todas as Respostas

  • Bom dia Junior.

    Creio que uma Instrução básica com porcentagem para uma consulta SQL no seu caso, seria:

    Select ID_ALUNOS, Alunos, (Count(ID_ALUNOS)* 100 / (Select Count(*) From TB_ALUNOS)) as porCem
    From TB_ALUNOS
    Group By Alunos


    GAMAL - DATA BASE ADMINISTRATOR

    quarta-feira, 3 de dezembro de 2014 14:01
  • Bom dia,

    Acho que isso deve te ajudar

    Declare @Aprovados int
    Declare @Total int

    set @Aprovados = (Select count(*) from Notas Where Nota >= 5);
    set @Total = (Select count(*) from Notas)


    Select ((@Aprovados*100)/@Total) as perc

    At.

    quarta-feira, 3 de dezembro de 2014 14:06
  • Olá Junior,

    Minha maneira de montar foi essa...

    Só copiar o código e executar no seu SQL

    Se lhe foi útil, avalie!

    CREATE TABLE #TB_ALUNO(ID_ALUNO INT IDENTITY,
    NOME_ALUNO VARCHAR(20))
    INSERT INTO #TB_ALUNO
    	SELECT
    		'ANDERSON'
    INSERT INTO #TB_ALUNO
    	SELECT
    		'PEDRO'
    INSERT INTO #TB_ALUNO
    	SELECT
    		'ROBERVAL'
    INSERT INTO #TB_ALUNO
    	SELECT
    		'MARIA'
    	
    CREATE TABLE #NOTAS(ID_NOTA INT IDENTITY, ID_ALUNO INT, NOTA FLOAT)
    
    INSERT INTO #NOTAS
    	SELECT
    		1,
    		2.0
    		INSERT INTO #NOTAS
    	SELECT
    		2,
    		3.0
    		INSERT INTO #NOTAS
    	SELECT
    		3,
    		3.0
    
    
    INSERT INTO #NOTAS
    	SELECT
    		4,
    		7.0
    
    SELECT
    	A.ID_ALUNO,
    	A.NOME_ALUNO,
    	B.ID_NOTA,
    	B.NOTA INTO #TEMP_TOTAL
    FROM #TB_ALUNO A
    
    INNER JOIN #NOTAS B
    	ON (A.ID_ALUNO = B.ID_ALUNO)
    
    SELECT
    	C.NOME_ALUNO,
    	C.NOTA
    FROM #TEMP_TOTAL C
    UNION ALL
    SELECT '(%) ABAIXO DE 5',
    (SELECT ((SUM(CASE WHEN X.NOTA < 5 THEN 1 ELSE 0 END))/ CAST(COUNT(*) AS FLOAT) * 100) FROM #TEMP_TOTAL X)
    
    DROP TABLE #NOTAS
    DROP TABLE #TB_ALUNO
    DROP TABLE #TEMP_TOTAL

    []'s,

    Anderson


    Se o meu conteúdo resolveu o seu problema ou sua dúvida, então marque como "Resposta", ou se foi útil, "Vote". Pois isso ajudará outras pessoas com o mesmo problema ou dúvida.

    • Marcado como Resposta JuniorOSL quarta-feira, 3 de dezembro de 2014 17:35
    quarta-feira, 3 de dezembro de 2014 14:31