Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- napisz procedure wybierajaca kraj , ktorego kod podajemy jako parametr wywolania.wynikiem dzialanie prodecury bedzie tabela skladajaca sie z 1 wiersza zawierajacego: kod kraju , nazwa kraju ,kontynent , ilosc oficjalnych jezyków , ilosc nieoficjanlych jezykow , jezyk. jezeli ilosc oficjalnych jezykow wynosi wiecej niz 1 to tabela powinna w kolumnie jezyk wypisac jezyk ktorym posluguje sie najwieksza liczba mieszkajacych
- ----------------------------------------------------------------------------------------------------------------------
- CREATE PROCEDURE zadanie_1(u_kod char(3))
- BEGIN
- DECLARE oficjalne integer;
- DECLARE nieoficjalne integer;
- DECLARE jezyk char(30);
- SELECT COUNT(*) INTO oficjalne FROM CountryLanguage WHERE CountryCode=u_kod AND IsOfficial="T";
- SELECT COUNT(*) INTO nieoficjalne FROM CountryLanguage WHERE CountryCode=u_kod AND IsOfficial="F";
- IF il_oficjalne>1 THEN
- SELECT LANGUAGE into jezyk FROM CountryLanguage WHERE IsOfficial="T" and CountryCode=u_kod ORDER by Percentage DESC Limit 1;
- ELSE
- SELECT LANGUAGE into jezyk from CountryLanguage WHERE IsOfficial="T" AND CountryCode=u_kod;
- END IF;
- SELECT Code,Name,Continent,oficjalne,nieoficjalne,jezyk FROM Country WHERE CODE=u_kod;
- END
- Separator $$
- call zadanie_1("kodkraju(np. POL)")
- ----------------------------------------------------------------------------------------------------------------------
- Napisz procedurę o nazwie ZADANIE_2 wybierającą kraj, którego kod podajemy jako parametr wywołania. Wynikiem działania procedury będzie tabela składająca się z jednego lub kilku wierszy zwierających: Kod(Country.Code), nazwę kraju(Country.Name), kontynent(Country.Continent) jaki procent w sumie stanowią języki oficjalne a jaki nieoficjalne oraz język. Ostatnia kolumna zwiera języki które w sumie stanowią większość.
- create Procedure Zadanie_2(u_kod varchar(50))
- BEGIN
- DECLARE procent_nieoficjalnych decimal(50,2);
- DECLARE procent_oficjalnych decimal(50,2);
- SELECT sum(countrylanguage.percentage) into procent_nieoficjalnych FROM countrylanguage WHERE countrylanguage.CountryCode=u_kod and countrylanguage.IsOfficial="F";
- SELECT sum(countrylanguage.percentage) into procent_oficjalnych FROM countrylanguage WHERE countrylanguage.CountryCode=u_kod and countrylanguage.IsOfficial "T";
- ----------------------------------------------------------------------------------------------------------------------
- napisz procedure wybierajaca kraj ktorego kod podajemy jako parametr wywolania. wynikiem dzialania prodecury bedzie tabla skladajaca sie z 1 wiersza zawierajacego : kod kraju,nazwe kraju,kontynent,stolice,ilosc miast oraz nazwe miasta o najwiekszej liczbie mieszkancow nie będącej stolicą.jezeli ilosc miast mnijesza od 2 to zamiast nazwy miasta komunikat brak miejscowości
- create procedure zadanko(kod(char3))
- BEGIN
- DECLARE stolica varchar(30);
- DECLARE miasto varchar(30);
- DECLARE ilosc_miast int DEFAULT 0;
- SELECT City.Name into stolica FROM City INNER JOIN Country on Country.Capital = City.Id WHERE Country.Code=kod;
- SELECT Count(*) into ilosc_miast from City WHERE City.CountryCode = kod;
- if ilosc_miast<2 then
- SELECT "brak miejscowości" into miasto;
- ELSE
- SELECT City.Name into miasto from City INNER JOIN Country on City.CountryCode=Country.Code WHERE Country.Capital <> City.id and Country.Code=kod ORDER by City.Population desc limit 1;
- end if;
- SELECT Code,Name,Continent,ilosc_miast,stolica,miasto FROM Country WHERE Country.Code=kod;
- END
- ----------------------------------------------------------------------------------------------------------------------
- napisz procedure otrzymujaca jeden parametr nazwe dzialu i zwraca jeden wiersz zawierajacy informacje ile jest osob zarabiajacych wiecej oraz ile osob zarabiajacych mniej niz wynosi srednia pensja dzialu podanego jako parametr wywolania
- CREATE PROCEDURE zadanie3(dzial_a varchar(100))
- BEGIN
- DECLARE srednia decimal;
- DECLARE ilosc_mniej integer;
- DECLARE ilosc_wiecej integer;
- SELECT avg(pensja) into srednia FROM lista_plac WHERE dzial=dzial_a;
- SELECT count(*) into ilosc_mniej from lista_plac WHERE pensja<srednia;
- SELECT count(*) into ilosc_wiecej from lista_plac WHERE pensja>srednia;
- SELECT ilosc_mniej,ilosc_wiecej;
- end
- ----------------------------------------------------------------------------------------------------------------------
- napisz procedure zawierajaca 3 parametry kazdy z tych parametrow bedzie zawieral nazwe dzialu procedura wyswietli wszystkich pracownikow tego dzialu ktorego jest najwiecej posrod podanych parametrow
- CREATE PROCEDURE zadanie3(dzial_a varchar(100))
- BEGIN
- declare dzial1 int;
- declare dzial2 int;
- declare dzial3 int;
- SELECT count(*) into dzial1 FROM lista_plac WHERE dzial=dzial1;
- SELECT count(*) into dzial2 FROM lista_plac WHERE dzial=dzial2;
- SELECT count(*) into dzial3 FROM lista_plac WHERE dzial=dzial3;
- IF dzial1>dzial2 AND dzial1>dzial3_il THEN
- SELECT imie, nazwisko FROM lista_plac WHERE dzial=dzial1;
- ELSEIF dzial2>dzial1 AND dzial2>dzial3 THEN
- SELECT imie, nazwisko FROM lista_plac WHERE dzial=dzial2;
- ELSE
- SELECT imie, nazwisko FROM lista_plac WHERE dzial=dzial3;
- END IF;
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement