Welcome to Sign in | Help
in Search

Incepator SQL...va rog ajutor

Last post 02-24-2012, 5:42 PM by Campean Ciprian. 4 replies.
Sort Posts: Previous Next
  •  02-23-2012, 7:04 PM 9129

    Incepator SQL...va rog ajutor

    Nu am reusit sa rezolv urmatoarea problema:

    Se dă tabelul:
    CREATE TABLE Angajaţi(
    ID INTEGER NOT NULL,
    Prenume VARCHAR (25) NOT NULL,
    Nume VARCHAR (25) NOT NULL,
    CNMU VARCHAR (13) NOT NULL,
    Adresa VARCHAR (25) NOT NULL,
    Domiciliu VARCHAR (25) NOT NULL,
    DataNaşterii DATE,
    LoculNaşterii VARCHAR (50),
    NrTelefon VARCHAR (20),
    PregătireŞcolară VARCHAR (20),
    StareCivilă VARCHAR (20),
    Sex VARCHAR (10),
    SalariuMax NUMERIC (10),
    SalariuMediu NUMERIC (10));

    Cerinta este formulata asa:
    Trebuie să prezentaţi toate stările civile în care se află cel mult 4 angajaţi. Aşadar, dacă aveţi stările:
    -căsătorit
    - necăsătorit
    unde 5 angajaţi au starea căsătorit şi 3 angajaţi au starea necăsătorit, la ieşire, dvs. veţi afişa: necăsătorit, deoarece în starea civilă căsătorit se află mai mult de 4 angajaţi.

    Nu am reusit sa ii dau de cap, desi am consultat ceva materiale....nu prea imi este clar...
    Va rog cine poate sa ma indrume...
    Multumesc
    Filed under: , , ,
  •  02-23-2012, 7:20 PM 9130 in reply to 9129

    Re: Incepator SQL...va rog ajutor

    Cam pare a fi o temă pentru acasă, așa că nu o să dau soluția completă, ci doar niște "hint-uri": încearcă ceva cu GROUP BY și cu HAVING.

    Răzvan
  •  02-24-2012, 3:51 PM 9134 in reply to 9130

    Re: Incepator SQL...va rog ajutor

    da, pe acolo ma invart ....si tot ma invart :) Multumesc
  •  02-24-2012, 4:45 PM 9135 in reply to 9134

    Re: Incepator SQL...va rog ajutor

    Păi hai să o luăm pe rând:

    1. de unde vrem să luăm datele? Evident, din tabela Angajati, deci avem un "FROM Angajati".

    2. ce coloane vrem să afișăm? Doar coloana StareCivila, deci avem "SELECT StareCivila"

    3. ce condiție trebuie să folosim? Numărul de rânduri pentru fiecare stare civilă trebuie să fie cel mult 4. Deci dacă este "pentru fiecare stare civilă" înseamnă că ne trebuie un "GROUP BY StareCivila", iar dacă vorbim de numărul de rânduri, atunci condiția este în HAVING (nu în WHERE cum e de obicei), deci ne mai trebuie un "HAVING COUNT(*)<=4".

    De aici, ar trebui să fie clar, mai trebuie doar să aranjăm clauzele de mai sus în ordinea corectă.

    Răzvan

  •  02-24-2012, 5:42 PM 9136 in reply to 9135

    Re: Incepator SQL...va rog ajutor

    N-as putea spune unde...dar mereu imi dadea eroare de sintaxa cand scriam interogarea. S-ar putea sa fi scris Count fara (*). Oricum,ceva foarte aproape incercam! Mii de multumiri! Luasem o pauza si tocmai ma puneam pe incercari iar! O zi buna va doresc!
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems