Sunteți pe pagina 1din 7

Subiect comun

using System.Data.SqlServerCe;

SqlCeConnection con;
SqlCeCommand cmd;
SqlCeDataAdapter da;
DataTable dt;

public Form1()
{
InitializeComponent();
con = new SqlCeConnection("Data Source=admitere.sdf");
con.Open();
afisare("SELECT * FROM admitere");
}

void afisare(string s)
{
cmd = new SqlCeCommand(s, con);
da = new SqlCeDataAdapter(cmd);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}

private void button1_Click(object sender, EventArgs e)


{
string s;
s = @"UPDATE admitere SET media=(proba1+proba2-0.01)/2, rezultat='respins'";
cmd=new SqlCeCommand(s,con);
cmd.ExecuteNonQuery();

s = @"UPDATE admitere SET rezultat='admis' WHERE id IN (SELECT TOP(20) id FROM admitere WHERE proba1>=5
AND proba2>=5 ORDER BY media DESC)";
cmd = new SqlCeCommand(s, con);
cmd.ExecuteNonQuery();
afisare("SELECT * FROM admitere ORDER BY media DESC");
}

Problema 1
S se creeze dou interogari, cu structura NUME, PRENUME, REZULTAT, MEDIA, una cu fetele iar alta cu bieii
ce s-au prezentat la examen, ordonate descresctor, fiecare, dup criteriul mediei obinute la examen.

private void button2_Click(object sender, EventArgs e)


{
afisare(@"SELECT nume,prenume, rezultat, media FROM admitere WHERE sex='f' ORDER BY media DESC");
}
private void button3_Click(object sender, EventArgs e)
{
afisare(@"SELECT nume,prenume, rezultat, media FROM admitere WHERE sex='m' ORDER BY media DESC");
}

Problema 2
S se creeze dou interogari care s conin:
lista celor mai buni cinci candidai admii
lista celor mai slabi cinci candidai admii
Structura: NUME, PRENUME, MEDIA, DATAN, ORA

private void button2_Click(object sender, EventArgs e)


{
afisare(@"SELECT TOP(5) nume,prenume,media, datan, oras FROM admitere WHERE rezultat='admis' ORDER BY
media DESC");
}
private void button3_Click(object sender, EventArgs e)
{
afisare(@"SELECT TOP(5) nume,prenume,media, datan, oras FROM admitere WHERE rezultat='admis' ORDER BY
media");
}

Problema 3
S se creeze o interogare care s conin candidaii admii ce au vrsta cuprins ntre 18 i 20 de ani, relativ la
data la care se consult tabela. Articolele vor fi ordonate cresctor dup DATAN. Pentru dou articole care au
DATAN egal, ordinea va fi dat de NUME.
Structura interogrii: NUME, PRENUME, ORA, DATAN, MEDIA

private void button2_Click(object sender, EventArgs e)


{
afisare(@"SELECT nume, prenume,oras,datan,media FROM admitere WHERE rezultat='admis' AND
DATEADD(year,18,datan)<=GETDATE() AND GETDATE() < DATEADD(year,21,datan) ORDER BY datan,nume");
}

Problema 4
S se creeze dou interogri ce conin: NUME, PRENUME, PROBA1, REZULTAT, respectiv NUME, PRENUME,
PROBA2, REZULTAT ordonate descresctor dup criteriul PROBA1 respectiv PROBA2

private void button2_Click(object sender, EventArgs e)


{
afisare(@"SELECT nume, prenume,proba1, rezultat FROM admitere ORDER BY proba1 DESC");
}
private void button3_Click(object sender, EventArgs e)
{
afisare(@"SELECT nume, prenume,proba2, rezultat FROM admitere ORDER BY proba2 DESC");
}

Problema 5
S se creeze o interogare ce conine situaia de la examen, cu lista candidailor n ordine alfabetic. Pentru doi
candidai cu acelai nume, ordinea n list va fi dat de prenume.
Structura: NUME, PRENUME, MEDIA, REZULTAT

private void button2_Click(object sender, EventArgs e)


{
afisare(@"SELECT nume,prenume,media, rezultat FROM admitere ORDER BY nume,prenume");
}

Problema 6
S se realizeze o situaie statistic, cu numrul procentual al mediilor cuprinse ntre: l - 5.00 ; 5.01 - 7.00 ; 7.01 -
9.00 ; 9.01 - 10. Procentele se vor prezenta ca numere ntregi, cu rotunjire.

private void button2_Click(object sender, EventArgs e)


{
string s = "SELECT count(*) FROM admitere";
cmd = new SqlCeCommand(s, con);
int nr=Convert.ToInt32(cmd.ExecuteScalar());
s = "SELECT count(*) FROM admitere WHERE media BETWEEN 9.01 AND 10";
cmd = new SqlCeCommand(s, con);
int nr1 = Convert.ToInt32(cmd.ExecuteScalar());
double p1=Math.Round(nr1 * 100.0 / nr,0);
label1.Text = "Medii intre 9.01-10: " + p1 + "%";

s = "SELECT count(*) FROM admitere WHERE media BETWEEN 7.01 AND 9";
cmd = new SqlCeCommand(s, con);
int nr2 = Convert.ToInt32(cmd.ExecuteScalar());
double p2 = Math.Round(nr2 * 100.0 / nr, 0);
label2.Text = "Medii intre 7.01-9: " + p2 + "%";

s = "SELECT count(*) FROM admitere WHERE media BETWEEN 5.01 AND 7";
cmd = new SqlCeCommand(s, con);
int nr3 = Convert.ToInt32(cmd.ExecuteScalar());
double p3 = Math.Round(nr3 * 100.0 / nr, 0);
label3.Text = "Medii intre 5.01-7: " + p3 + "%";

s = "SELECT count(*) FROM admitere WHERE media BETWEEN 1 AND 5";


cmd = new SqlCeCommand(s, con);
int nr4 = Convert.ToInt32(cmd.ExecuteScalar());
double p4 = Math.Round(nr4 * 100.0 / nr, 0);
label4.Text = "Medii intre 1-5: " + p4+ "%";
}

Problema 8
S se fac o interogare cu structura: NUME, PRENUME, MEDIA, ORA, care s cuprind, pentru toate oraele ce
apar n lista examenului de admitere, cel mai bun (cei mai buni) candidat provenit din fiecare ora. Lista va fi
ordonat alfabetic n funcie de numele oraului.

private void button2_Click(object sender, EventArgs e)


{
afisare(@"SELECT nume,prenume,media, oras FROM admitere A WHERE media IN (SELECT MAX(media) FROM
admitere B WHERE A.oras=B.oras) ORDER BY oras");
}

Problema 9
S se creeze dou interogri cu informaii complete - mai puin oraul - cu candidaii admii, respectiv respini
la examen, provenii din CLUJ. Listele vor fi ordonate dup medie. La medii egale, se va face ordonare
alfabetic.

private void button2_Click(object sender, EventArgs e)


{
afisare(@"SELECT nume, prenume,proba1,proba2, media, rezultat,datan,sex FROM admitere WHERE
rezultat='admis' AND oras='Cluj' ORDER BY media DESC,nume,prenume");
}
private void button3_Click(object sender, EventArgs e)
{
afisare(@"SELECT nume, prenume,proba1,proba2, media, rezultat,datan,sex FROM admitere WHERE
rezultat='respins' AND oras='Cluj' ORDER BY media DESC,nume,prenume");
}

Problema 10
n urma evalurii contestaiilor, candidatului DINITA Razvan i s-a modificat nota de la proba1, din 9.88 n 9.50,
iar candidatului LAMPINEAN Neonila nota de la proba2 din 4.99 n 5.
Facei modificrile respective n tabel.
private void button2_Click(object sender, EventArgs e)
{
string s;
s = @"UPDATE admitere SET proba1=9.50, media=(proba1+proba2-0.01)/2 WHERE nume='Dinita' AND
prenume='Razvan'";
cmd = new SqlCeCommand(s, con);
cmd.ExecuteNonQuery();
s = @"UPDATE admitere SET proba2=5.00, media=(proba1+proba2-0.01)/2 WHERE nume='Lampinean' AND
prenume='Neonila'";
cmd = new SqlCeCommand(s, con);
cmd.ExecuteNonQuery();
// button1_Click(sender,e);
button1.PerformClick();
}

Problema 11
n cmin sunt disponibile 4 locuri. Ele se vor distribui n ordinea descresctoare a mediilor, candidailor admii
care au domiciliul n alt localitate dect Braov.
S se creeze o interogare cu viitorii cminiti, cu urmtoarea structur: NUME, PRENUME, ORA, MEDIA.
Lista va fi ordonat descresctor dup criteriul mediei la examen. La medii egale, departajarea se va face dup
nota la proba1

private void button2_Click(object sender, EventArgs e)


{
afisare(@"SELECT TOP(4) nume, prenume, oras, media FROM admitere WHERE rezultat='admis' AND
oras!='Brasov' ORDER BY media DESC,proba1 DESC");
}

Problema 12
n cmin sunt disponibile 2 locuri pentru biei i 3 pentru fete. S se creeze dou interogri, una pentru biei
i una pentru fete, cu candidaii admii ce nu sunt din Braov i obin loc n cmin. Locurile disponibile se vor
distribui n ordinea descresctoare a mediilor, la medii egale departajarea fcndu-se dup nota obinut la
proba1.
Lista va fi ordonat descresctor dup criteriul mediei la examen.
Coloanele afiate sunt: NUME, PRENUME, ORA, MEDIA.

private void button2_Click(object sender, EventArgs e)


{
afisare(@"SELECT TOP(3)nume, prenume, oras, media FROM admitere
WHERE rezultat = 'admis' AND oras != 'Brasov' AND sex='f' ORDER BY media DESC, proba1 DESC");
}
private void button3_Click(object sender, EventArgs e)
{
afisare(@"SELECT TOP(2)nume, prenume, oras, media FROM admitere
WHERE rezultat = 'admis' AND oras != 'Brasov' AND sex='m' ORDER BY media DESC, proba1 DESC");
}

Problema 13
Pentru candidaii admii la examen se dau dou categorii de burse:
de merit - pentru candidaii ce au obinut medii cuprinse ntre 9.75 i 10
de studii - pentru candidaii ce au obinut medii cuprinse ntre 8.50 i 9.74.
S se creeze dou interogri cu cele dou categorii de bursieri, ordonate alfabetic.
Coloanele afiate sunt: NUME, PRENUME, MEDIA
private void button5_Click(object sender, EventArgs e) ///bursa merit
{
afisare(@"SELECT nume, prenume, media FROM admitere WHERE media >= 9.75 AND rezultat ='admis' ORDER BY
nume, prenume");
}
private void button4_Click(object sender, EventArgs e)
{
afisare(@"SELECT nume, prenume, media FROM admitere WHERE media BETWEEN 8.5 AND 9.74 AND
rezultat='admis' ORDER BY nume, prenume");
}

Problema 14
S se fac dou interogri ordonate alfabetic, pentru Comisariatul Militar, una cu bieii incorporabili i una cu
cei neincorporabili n armat.
Un candidat (biat) este incorporabil dac:
este respins
are vrsta de cel puin 20 de ani la data de 20 mai 2011.
Coloanele afiate: NUME, PRENUME, DATAN, ORA.

private void button6_Click(object sender, EventArgs e)


{
afisare(@"SELECT nume, prenume, datan, oras FROM admitere WHERE DATEADD(year, 20, datan) <= CAST('2014-
05-20' AS DATETIME) AND rezultat = 'respins' AND sex = 'm' ORDER BY nume, prenume");
}
private void button7_Click(object sender, EventArgs e)
{
afisare(@"SELECT nume, prenume, datan, oras FROM admitere WHERE NOT( DATEADD(year, 20, datan) <=
CAST('2014-05-20' AS DATETIME) AND rezultat = 'respins') AND sex = 'm' ORDER BY nume, prenume");
}

Problema 15
S se fac o statistic pentru candidaii provenii dintr-un ora fixat, care s evidenieze procentul de admii din
oraul respectiv i numrul de candidai provenii din acest ora. Procentul se va furniza ca numr ntreg, cu
rotunjire.

private void button2_Click(object sender, EventArgs e)


{
string s = "SELECT COUNT(*) FROM admitere WHERE oras = '" + textBox1.Text + "'";
cmd = new SqlCeCommand(s, con);
int nr = Convert.ToInt32(cmd.ExecuteScalar());
label3.Text = "Numar candidati: " + nr;
s = "SELECT COUNT(*) FROM admitere WHERE rezultat = 'admis' AND oras = '" + textBox1.Text + "'";
cmd = new SqlCeCommand(s, con);
int nradm = Convert.ToInt32(cmd.ExecuteScalar());
double proc = nradm * 100.0 / nr;
label2.Text = "Procent admitere: " + Math.Round(proc, 0) + " %";
afisare("SELECT * FROM admitere WHERE oras = '" + textBox1.Text + "'");
}

Problema 16
S se fac o statistic n care s se evidenieze media notelor la proba1, media notelor la proba2 i media
mediilor generale doar pentru candidaii declarai admii la examen. Fiecare dintre cele trei medii se calculeaz
cu rotunjire la a doua zecimal.

private void button2_Click(object sender, EventArgs e)


{
string s = @"SELECT AVG(proba1) FROM admitere WHERE rezultat = 'admis'";
cmd = new SqlCeCommand(s, con);
double mp1 = Convert.ToDouble(cmd.ExecuteScalar());
label1.Text = "Media proba 1: " + Math.Round(mp1, 2).ToString();

s = @"SELECT AVG(proba2) FROM admitere WHERE rezultat = 'admis'";


cmd = new SqlCeCommand(s, con);
double mp2 = Convert.ToDouble(cmd.ExecuteScalar());
label2.Text = "Media proba 2: " + Math.Round(mp2, 2).ToString();

s = @"SELECT AVG(media) FROM admitere WHERE rezultat = 'admis'";


cmd = new SqlCeCommand(s, con);
double m = Convert.ToDouble(cmd.ExecuteScalar());
label3.Text = "Media mediilor: " + Math.Round(m, 2).ToString();
}

Problema 17
S se fac o interogare cu toi candidaii care au media peste media de admitere dar care au fost declarai
respini. Coloanele: NUME, PRENUME, MEDIA, ORA.

private void button2_Click(object sender, EventArgs e)


{
string s = @"SELECT MIN(media) FROM admitere WHERE rezultat='admis'";
cmd = new SqlCeCommand(s, con);
double med = Convert.ToDouble(cmd.ExecuteScalar());
s = @"SELECT nume,prenume,media,oras FROM admitere WHERE rezultat='respins' AND media>=" + med;
afisare(s);
}

Problema 18
S se evidenieze care este:
media mediilor candidailor admii
media mediilor candidailor respini.
Fiecare dintre cele dou medii se calculeaz cu rotunjire la a doua zecimal.

private void button2_Click(object sender, EventArgs e)


{
string s = @"SELECT AVG(media) FROM admitere WHERE rezultat = 'admis'";
cmd = new SqlCeCommand(s, con);
double mma = Convert.ToDouble(cmd.ExecuteScalar());
label1.Text = "Media mediilor candidatiilor admisi: " + Math.Round(mma, 2).ToString();

s = @"SELECT AVG(media) FROM admitere WHERE rezultat = 'respins'";


cmd = new SqlCeCommand(s, con);
double mmr = Convert.ToDouble(cmd.ExecuteScalar());
label2.Text = "Media mediilor: " + Math.Round(mmr, 2).ToString();
}

Problema 19
a) S se fac o interogare n care s listm oraele n ordine alfabetic, pentru fiecare ora afind numrul de
candidai. Coloanele vor fi: ORAS, NRCAND
b) S se afieze oraul (oraele) care au numrul cel mai mare de candidai. Se va afia oraul i nr. de candidai.

private void button2_Click(object sender, EventArgs e)


{
string s = @"SELECT oras, COUNT(*) AS nrcand FROM admitere GROUP BY oras";
afisare(s);
}
private void button3_Click(object sender, EventArgs e)
{
string s = "SELECT oras, COUNT(*) FROM admitere GROUP BY oras";
cmd = new SqlCeCommand(s, con);
SqlCeDataReader dr = cmd.ExecuteReader();
int max = 0;
while (dr.Read())
{
if (Convert.ToInt32(dr[1]) > max)
max = Convert.ToInt32(dr[1]);
}
s = @"SELECT oras,COUNT(*) FROM admitere
GROUP BY oras
HAVING COUNT(*) = " + max;
afisare(s);
}

Problema 20
n vederea repartizrii celor admii n grupe de cte 10 studeni fiecare, s se distribuie candidaii admii, n
ordinea descresctoare a mediilor de admitere dup cum urmeaz: primul candidat este repartizat n grupa1, al
doilea n grupa2, al treilea n grupa1, al patrulea n grupa2, i aa mai departe.
Structura tabelelor ce se vor afia, va fi: NUME, PRENUME, ORAS, MEDIA, DATAN.

private void button2_Click(object sender, EventArgs e)


{
string s = @"SELECT nume,prenume,oras,media,datan FROM admitere
WHERE rezultat='admis' ORDER BY media DESC";
cmd = new SqlCeCommand(s, con);
SqlCeDataReader dr = cmd.ExecuteReader();
dataGridView1.DataSource = null;
dataGridView2.DataSource = null;
dataGridView1.ColumnCount = 5;
dataGridView1.Rows.Add("Nume", "Prenume", "Oras", "Media", "Data nasterii");
dataGridView2.ColumnCount = 5;
dataGridView2.Rows.Add("Nume", "Prenume", "Oras", "Media", "Data nasterii");
int i = 1;
while (dr.Read())
{
if (i % 2 == 1)
dataGridView1.Rows.Add(dr[0], dr[1], dr[2], dr[3], dr[4]);
else
dataGridView2.Rows.Add(dr[0], dr[1], dr[2], dr[3], dr[4]);
i++;
}
}

S-ar putea să vă placă și