Welcome to Sign in | Help

Re: scrip de select sql server 2000

  •  07-17-2007, 1:47 PM

    Re: scrip de select sql server 2000

    katalyn:

    Cerinţa este: "Cea mai populata unitate teritoriala din fiecare tara, populatia ei si tara de care apartine"

     

    În fine, sper că Alex a fost lămurit indiferent de care este cerinţa corectă.

    Acest enunt este eronat pentru ca:

    [1] expresia este "unitate teritoriala" este  neclară: UT  = J sau UT = L sau UT = J + L

    [2] pp. ca UT se refera la - virgula -  localitati atunci pot exista (cel putin teoretic) mai multe L din aceeasi T cu aceeasi populatie (nr. locuitori) si aceasta populatia sa fie maxima la nivelul tarii respective:

    LOC_A  --- TARA_X --- 100.000

    LOC_B --- TARA_X --- 100.00 

     

    Care sunt cele mai populate localitati (nr. maxim de locuitori) din fiecare tara, populatia lor si tara de care apartin ?

    In acest caz solutia este cea prezentata anterior (s-a avut in vedere inc. faptul ca la nivelul unei tari pot exista m. multe localitati cu acelasi nr. de locuitori, nr. de locuitori fiind maxim):

    <solutie> 

    SELECT T.nume_tara, J.nume_judet, L.nume_loc, MAX(L.nr_locuitori) AS Nr
    FROM Localitate L INNER JOIN Judet J ON L.id_judet = J.id_judet
        INNER JOIN Tara T ON J.id_tara = T.id_tara
    GROUP BY T.id_tara, L.id_loc , T.nume_tara, J.nume_judet, L.nume_loc
        HAVING MAX(L.nr_locuitori) >=
            ALL(SELECT LSQ.nr_locuitori
                FROM Localitate LSQ INNER JOIN Judet JSQ ON LSQ.id_judet = JSQ.id_judet
                WHERE JSQ.id_tara = T.id_tara )

    </solutie>

     

     

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems