none
Consulta Básica RRS feed

  • Pergunta

  • Sou bem novato em SQL Server mas preciso realizar um Cálculo, que para quem sabe até que deve ser simples,
    Mas eu não estou conseguindo montar a Consulta.


    Preciso fazer um cálculo de frequência por Turma e todas essas Informações que preciso para realizar o Cálculo
    eu consigo em uma única Tabela.


    A lógica para o Calculo é a seguinte:

    (Total de Alunos do Bimestre * quantidade de Aulas Dadas) - Total de Faltas / Total de Alunos

    Sei que para ter o total de alunos, eu faço um COUNT(*) no RA do Aluno


    Alguém pode me dar um Help em relação a isso?

    Muito Grata

    sexta-feira, 23 de outubro de 2009 00:11

Todas as Respostas

  • Boas,
    se você puder dar mais detalhes sobre as tabelas ficava mais fácil :D

    Abraços
    http://marcoscavaleiro.blogspot.com
    sexta-feira, 23 de outubro de 2009 09:17
  • Olá,

    A estrutura da minha Tabela é a Seguinte:
    dbo.Tb_Frequencia
    Cod_Freq
    RA - ra aluno
    Al_Previs - Qde de aulas Previstas
    Al_Dadas - Qde de aulas dadas
    Bismes - Bimestre
    Ft_Periodo - Qde de Faltas no Período
    Ano_Serie - Ano_Série do Aluno
    Periodo - Período (Ex. manha, tarde, noite)
    Turma Discip (Turma. A, B...)

    Ai em cima desses dados eu tenho que montar uma query. É um calculo que será utilizado em um processo

    Ai o calculo seria esse que falei:
    (Total de Alunos do Bimestre * quantidade de Aulas Dadas) - Total de Faltas / Total de Alunos

    Tem como me ajudar nisso?
    Grato

    sexta-feira, 23 de outubro de 2009 10:49
  • Só mais uma dúvida :)
    Voce quer fazer isso para todos os Bimestre de uma vez ou o bimestre em questão sera passado por parametro?

    Abraços


    http://marcoscavaleiro.blogspot.com
    sexta-feira, 23 de outubro de 2009 11:05
  • Olá

     

    No caso, o Bimestre será passado como parâmetro. Como disse, esse cálculo será utilizado em um processo, e como em 1 ano eu tenho 4 Bimestres, então eu tenho 4 Cálculos.

    Mas é aquela coisa.....Fazendo um eu faço o restante, tendeu?

    O problema é que não consigo dar ínicio. Pode me ajudar?

    Obrigado

    sexta-feira, 23 de outubro de 2009 14:19
  • Wagner voce tem o script de criar o banco e preencher ele??
    se tiver cola ai, que eu mando pro meu sql.

    abraço.

    sexta-feira, 23 de outubro de 2009 14:49
  • Segue Script.

    INSERT INTO dbo.Tb_Frequencia
    (Cod_Freq,RA, Al_Previs, Al_Dadas, Bismes, Ft_Periodo, Ano_Serie, Periodo, Turma, Discip)
    VALUES (3, 3, 50, 39, 2, 14, '3', 'MANHA', 'A', 'PORTUGUES')


    CREATE TABLE Tb_Frequencia (
    Cod_Freq  INT NOT NULL PRIMARY KEY,
    RA INT NOT NULL,
    Al_Previs INT ,
    Al_Dadas INT,
    Bismes INT,
    Ft_Periodo INT,
    Ano_Serie VARCHAR ,
    Periodo VARCHAR(10),
    Turma CHAR(1),
    Discip VARCHAR(30))



    Toda ajuda é muito bem vinda...

    Obrigado

    sexta-feira, 23 de outubro de 2009 15:10
  • Cara mais umas dúvidas:D

    (Total de Alunos do Bimestre * quantidade de Aulas Dadas) - Total de Faltas / Total de Alunos

    Nesta formula
    Total de Alunos do Bimestre  -> ta tudo ok..
    quantidade de Aulas Dadas -> aulas dadas no Bimestre???
    Total de Faltas -> faltas no bimestre ou no ano todo??
    Total de Alunos-> este é no ano todo??


    Abraços


    http://marcoscavaleiro.blogspot.com
    sexta-feira, 23 de outubro de 2009 15:58
  • Então...é o Segte:

    Todo esse Cálculo é por Bimestre. Como disse, esse Calculo vou utiliza-lo em um processo. Então, cada ano tem 4 Bimestre, então tenho que fazer 4 Calculos. Mas assim....se eu conseguir fazer um, o restante será igual.

    Ai eu tenho que somar a Quantidade de Aluno de um Bimestre, ou seja, COUNT(*) RA Where Bimestre = tal

    O Result disso eu tenho que Multiplicar pela Quantidade de aulas dadas(Al_Dadas ) naquele Bimestre .
    O resultado dessa Multiplicação devo fazer Menos o Total de Faltas (Ft_Periodo) e por último dividir pela quantidade de alunos no Bimestre novamente.

    O meu processo chama-se "Processo de Frequencia por Turma", onde eu tenho que calcular a Frequência (Total de Faltas) de uma Turma(sala de aula). Ai nesse caso, eu estou utilizando a lógica abaixo:

    (Total de Alunos do Bimestre * quantidade de Aulas Dadas) - Total de Faltas / Total de Alunos

    O problema é que não consigo montar a Query.
    Cara, se conseguir me ajudar ficarei mto grato

    Vlw msm

    Aguardo

     

    sexta-feira, 23 de outubro de 2009 16:15
  • Mais este calculo vc tenq fazer no SQL? ou pode levar os dados pro c# e calcular depois??
    sexta-feira, 23 de outubro de 2009 16:22
  • Então, isso é um sistema em Delhi utilizando como Banco o SQL Server 2005.

    Eu devo colocar esse Cálculo no Botão "Calcular".

    Tenho alguns parâmetros que são: Turma, Discilplina, Ano_Série, Período.
    Dai, vai ter o Calculo de Frequência para Cada BImestre, ou seja, 4 botões Calcular e depois ainda tem um outro Botão que vai realizar a Frequencia dos 4 bimestres, ou seja, esse último botão vai pegar o Result de cada Bimestre e fazer um Cálculo geral..

    sexta-feira, 23 de outubro de 2009 16:35
  • public class Class1
        {
            public void consultabanco()
            {
                //na linha abaixo onde ta escrito LBTOLEDO-PC\SQLEXPRESS = seu banco no servidor
                //na linha abaixo onde esta escrito "ALUNO" = o nome do seu banco
                string Frequencia_por_Periodo;
                string QTD_AULAS_DADAS ;
                string Faltas_por_periodo;
                string QTD_ALUNOS;
    
                string connectionString = @"Data Source=LBTOLEDO-PC\SQLEXPRESS;Initial Catalog=aluno;Integrated Security=True";
                SqlConnection cnn = new SqlConnection(connectionString);  
                cnn.Open(); 
    
                SqlCommand cmd = cnn.CreateCommand();
                cmd.CommandText = "select count(*) from tb_frequencia where (Ft_Periodo = 13) and (Bismes = 2)";
                SqlDataReader rs = cmd.ExecuteReader();
                if(rs.Read())
                {
                    Frequencia_por_Periodo = rs[""].ToString();
                } 
                rs.Close();
    
                cmd.CommandText = "select sum(Al_Dadas)from tb_frequencia where (Bismes = 2)";
                rs = cmd.ExecuteReader();
                if (rs.Read())
                {
                    QTD_AULAS_DADAS = rs[""].ToString();
                }
                rs.Close();
    
                cmd.CommandText = "select sum(Ft_Periodo) from tb_frequencia where (periodo = 'MANHA') and (Bismes = 2)";
                rs = cmd.ExecuteReader();
                if (rs.Read())
                {
                    Faltas_por_periodo = rs[""].ToString();
                }
                rs.Close();
    
                cmd.CommandText = "select count(*) from tb_frequencia where (Bismes = 2)";
                rs = cmd.ExecuteReader();
                if (rs.Read())
                {
                    QTD_ALUNOS = rs[""].ToString();
                }
                rs.Close();
    
                //ele soh converte os valores em outra classe, entao vc tenq usar neste metodo um return;
                Convert.ToInt32(QTD_ALUNOS);
                Convert.ToInt32(QTD_AULAS_DADAS);
                Convert.ToInt32(Faltas_por_periodo);
                Convert.ToInt32(QTD_ALUNOS);
                int CALCULO_TOTAL = (QTD_ALUNOS * QTD_AULAS_DADAS) - Faltas_por_periodo / QTD_ALUNOS;
            }
    
        }
    sexta-feira, 23 de outubro de 2009 16:46
  • Olá

    Nossa agora minha cabeça deu um Nó.

    Esse comando é do Delphi? É esse código que devo inserir no Delphi?

    É necessário ainda criar uma Query SQL?

    O que seria aqueles valores fixos, ex. (Bismes = 2), ou seja, pelo que entendi, no lugar desses valores fixos eu colocaria o valor do parâmetro do Delphi? Isso?


    Heeeelpp!!

     

    sexta-feira, 23 de outubro de 2009 17:02
  • Só os selects em SQL, agora que eu entendi que seu sistema é em Delphi, nao é??

    select count(*) --as Frequencia_por_Periodo
    from tb_frequencia
    where (Ft_Periodo = 13)
    and (Bismes = PARAMETRO);

    select count(*) from tb_frequencia where (Ft_Periodo = 13);

    select sum(Al_Dadas) as QTD_AULAS_DADAS
    from tb_frequencia
    where Bismes = PARAMETRO;

    select sum(Ft_Periodo) as Faltas_por_periodo
    from tb_frequencia
    where (periodo = 'NOITE') and (Bismes = PARAMETRO);

    select count(*) as QTD_ALUNOS
    from tb_frequencia
    where (Bismes = PARAMETRO);

    sexta-feira, 23 de outubro de 2009 17:07
  • É cara nao manjo nd de delphi, mais o as querys eu já postei aqui no forum, se voce colocar elas lah no SQL mesmo funciona sussa.

    Abraço.. espero ter ajudado

    sexta-feira, 23 de outubro de 2009 17:25