Sunteți pe pagina 1din 10

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 2017.
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('2017- 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