Orar semigroup #2

Orar semigroup #2

Archive for noiembrie 2012

Subiecte BAC 20 noiembrie

Subprogramul sub, cu trei parametri, primeşte prin intermediul parametrilor:
– v un tablou unidimensional cu cel mult 100 de componente ce memorează numere întregi de cel mult 4 cifre fiecare;
– n un număr natural nenul mai mic sau egal cu 100 ce reprezintă numărul efectiv de componente ale tabloului primit prin intermediul parametrului v;
– a un număr întreg cu cel mult 4 cifre.
Subprogramul sub returnează numărul componentelor tabloului primit prin intermediul parametrului v ale căror valori sunt strict mai mici decât valoarea parametrului a.
Exemplu: pentru valorile n=5, v=(1,21,9,21,403), a=20 ale parametrilor, în urma apelului, subprogramului sub va returna valoarea 2.
a) Scrieţi definiţia completă a subprogramului sub.
b) Să se scrie un program C/C++ care să citească de la tastatură un număr natural nenul n (n≤100) şi n numere întregi, fiecare având cel mult 4 cifre, şi care, folosind apeluri utile ale subprogramului sub, să afişeze pe ecran mesajul DA dacă oricare două dintre cele n numere întregi citite sunt distincte două câte două, sau mesajul NU în caz contrar.
Exemplu: pentru n=6 şi cele n numere citite de la tastatură: 47 183 69 8 134 -56
se va afişa pe ecran mesajul DA

#include<iostream>
#include<fstream>
using namespace std;
int sub(int v[], int n, int a)
{int i,j=0;
for(i=0;i<n;i++)
    if(v[i]<a)
        j++;
return j;}

int main()
{int n,v[100],i,a,vv[100];
cin>>n;
for(i=0;i<n;i++)
    cin>>v[i];
for(i=0;i<n;i++)
    vv[i]=sub(v,n,v[i]);
for(i=0;i<n-1;i++)
    for(int j=i+1;j<n;j++)
        if(vv[i]==vv[j])
            {cout<<"NU";return 0;}
cout<<"DA";
}

marți, 20 noiembrie 2012 by DlMuresan
Categories: | Leave a comment

19 noiembrie

Departamente, suma salariilor din fiecare, media, max si min din fiecare plus numarul de angajati
select department_name, sum(salary), trunc(avg(salary)), min(salary),max(salary),count(*) angajati from employees join departments using (department_id) group by department_name

select add_months(to_date('01-01-2012','dd-mm-yyyy'),4) from dual

select add_months(to_date('2012/02/02','yyyy-mm-dd'),4) from dual

select to_char(add_months(to_date('2012/02/02','yyyy-mm-dd'),4),'day,month,yyyy') from dual

Luna in cifre romane (rm sau RM)
select to_char(add_months(to_date('2012/02/02','yyyy-mm-dd'),4),'day,rm,yyyy') from dual


luni, 19 noiembrie 2012 by DlMuresan
Categories: , , | Leave a comment

16 noiembrie

select first_name, last_name,trunc(months_between(sysdate,hire_date)/12) "Ani de lucru" from employees

Fondul de salarii din fiecare departament dar doar pt angajatii mai vechi de 15 ani
select sum(salary) "Fond de salarii", department_name from employees e,departments d where e.department_id=d.department_id and trunc(months_between(sysdate,hire_date)/12)>15 group by department_name

Afiseaza doar departamentele in care lucraeza mai vechi de 15 ani cu fond de salarii de peste 15000
select sum(salary) "Fond de salarii", department_name from employees e,departments d where e.department_id=d.department_id and trunc(months_between(sysdate,hire_date)/12)>15 group by department_name having sum(salary)>15000

SELECT - coloane
FROM - tabele
WHERE - expresie logica
GROUP BY - coloan1, coloana 2
HAVING - expresie logica (conditie pe grupul definit)
ORDER - coloana1 (alias)

HAVING nu poate aparea fara GROUP BY


select sum(salary) "Fond de salarii", department_name from employees e,departments d where e.department_id=d.department_id and trunc(months_between(sysdate,hire_date)/12)>15 group by department_name having sum(salary)>=(select avg(salary) from employees)

select sum(salary) "Fond de salarii", department_name from employees e,departments d where e.department_id=d.department_id and trunc(months_between(sysdate,hire_date)/12)>1 group by department_name having count(*)>2

vineri, 16 noiembrie 2012 by DlMuresan
Categories: , | Leave a comment

Oracal v3 - 15 noiembrie

15 noiembrie

Suma salariilor din fiecare departament (CU GROUP BY)
select sum(salary), department_id from employees group by department_id

select sum(salary), department_id, first_name from employees group by department_id, first_name

Suma salariilor din fiecare departament (cu numele departamentului)
Sintaxa ANSI
select sum(salary), department_name from employees join departments using(department_id) group by department_name


Sintaxa Oracle
select sum(salary) "Fond de salarii", department_name from employees e,departments d where e.department_id=d.department_id group by department_name
(e si d - aliasurile tabelelor)


Self Joining (Angajati - Sefi)
ANSI: select e.first_name "angajat", m.first_name "sef" from employees e join employees m on(m.employee_id=e.manager_id)

select e.first_name "angajat", m.first_name "sef" from employees e join employees m on(m.employee_id=e.manager_id) where m.first_name='Steven' order by 2

ORACLE: select e.first_name, m.first_name from employees e, employees m where m.employee_id=e.manager_id order by 2


select e.first_name, m.first_name from employees e, employees m where m.employee_id=e.manager_id and m.first_name='Steven' order by 2

(2 - sef, 1 - angajat)



miercuri, 14 noiembrie 2012 by DlMuresan
Categories: , , | Leave a comment

Oracal v.2 - de pe Academy therory

Functie de inserare rand (instanta) intr-un tabel
(Sectiunea 12, Lectia 1, Slide 7)
insert into <table name> values (value1, value2, ...)
Value reprezinta atributele din coloanele existente (poate fi si null)

Adaugarea unei coloane noi la un tabel
S 12, L 2
alter table <table name> add (<column_name> <data type>)
Column name fara ' '



Stergerea unei coloane
alter table <table name> drop column <column name>

Stergerea unui rand
Delete from <table name> where <column name> = ' some value '

Proiectie - alegerea a uneia sau mai multor coloane

Selectie - alegerea a unuia sau mai multor randuri

select distinct department_id from employees - afiseaza valorile distincte din coloana department_id

select commission_pct, first_name from employees order by commission_pct - ordonare dupa comision
order apare ultimul in interogare

order by salary DESC - ordoneaza descrescator
fara DESC - ordoneaza crescator

In WHERE nu se pot pune alias-uri. Se pot pune decat in ORDER

select first_name, last_name, department_name
from employees e, departments d
where e.department_id (+)=d.department_id
order by department_name, first_name
cu (+) dupa coloana din where care e nula pt a o afisa, afiseaza si departamentul fara nume
Nu merge (+) la mai multe coloane pt oracle
Afiseaza direct numele departamentului pt fiecare angajat (in loc de id-ul departamentului)

Varianta ANSI pt acelasi lucru
select first_name, last_name, department_name from employees full outer join departments
using (department_id)
Cu left outer inainte de joi, afiseaza ce lipseste din stanga. Cu right outer, din dreapta.
Echivalentul (+) in ambele coloane este FULL OUTER JOIN

select department_name, count (department_id)
from employees join departments
using (department_id)
group by department_name
Numara cati angajati sunt in fiecare departament. Daca se aduna, rezulta angajatii in total.

miercuri, 7 noiembrie 2012 by DlMuresan
Categories: , , | 1 comment