kwerendy

karo358
Użytkownik
Użytkownik
Posty: 34
Rejestracja: 16 wrz 2008, o 19:40
Płeć: Mężczyzna
Lokalizacja: łódź
Podziękował: 3 razy

kwerendy

Post autor: karo358 »

Czy mozecie mi pomoc zrobic te kwerendy:
A. podaj liczby kobiet i mezczyz wsrod kandydatow mozesz wykorzystac fakt ze w danych kobiet wszystkie imiona koncza sie na "a".
B. utworz zestawienie zawierajace informacje o liczbie kandydatow korzystajacych z poszczegolnych sieci komorkowych
C. utworz zestawienie zawierajace informacje o liczbach kandydatow z poszczegolnych woj. Wymien nazwy woj z ktorych zglosilo sie wiecej kandydatow niz 20.
D. Utworz zestawienie zawierajace liste kandydatow (imie, nazwisko, woj) ktorzy maja wyksztalcenie srednie lub wyzsze, interesuja sie grami komputerowymi, i nie przekroczyli 50 roku zycia. Podaj ilu w srod nich jest z wyksztalcenie wyzszym a ktore ze srednim.
E. Organizator programu telewizyjnego planuje zakwalifikowac do programu tylko te osoby ktore interesuja sie polityka lub sportem. ponadto dla kobiet wymagany jest wzrost co najmniej 168 cm, a w przypadku mezczyzn 175 cm powiedz ile kobiet i ilu mezczyzn spelnia wymagane kryteria.
smiechowiec
Użytkownik
Użytkownik
Posty: 374
Rejestracja: 21 cze 2007, o 11:28
Płeć: Mężczyzna
Lokalizacja: Łostowice
Pomógł: 146 razy

kwerendy

Post autor: smiechowiec »

Zakładając, że wszystkie dane dostępne są w jednej tablicy o strukturze
CREATE TABLE kandydat (
imie varchar(20),
nazwisko varchar(30),
tel varchar(15),
woj varchar(20), -- nazwa województwa
wykształcenie varchar(20), -- nazwa wykształcenia
data_urodzenia date,
-- zainteresowania
gry_komputerowe char(1), -- T(ak) lub N(ie)
polityka char(1), -- T(ak) lub N(ie)
sport char(1), -- T(ak) lub N(ie)
wzrost integer -- wzrost w cm
);


A. podaj liczby kobiet i mezczyz wsrod kandydatow mozesz wykorzystac fakt ze w danych kobiet wszystkie imiona koncza sie na "a".
SELECT COUNT(*) FROM kandydat WHERE imie LIKE '%a'; -- liczba osób których imię kończy się na a, choć Barnaba to imię męskie
SELECT COUNT(*) FROM kandydat WHERE NOT (imie LIKE '%a'); -- liczba osób których imię niekończy się na a, czyli niby to mężczyźni


B. utworz zestawienie zawierajace informacje o liczbie kandydatow korzystajacych z poszczegolnych sieci komorkowych
Zakładając że numery w sieci Orange zaczynają się od 5,
SELECT COUNT(*) FROM kandydat WHERE tel like '5%'; -- Orange
SELECT COUNT(*) FROM kandydat WHERE (tel like '600%') OR (tel like '604%') OR (tel like '606%') ; -- OR (tel like '608%') ... i wymieniamy nr jakie są w ERA
SELECT COUNT(*) FROM kandydat WHERE (tel like '601%') OR (tel like '603%') OR (tel like '605%') ; -- OR (tel like '607%') ... i wymieniamy nr jakie są w Plusie
dla konkretnej bazy mozna uzyć funkcji sprawdzającej parzystść3 cyfry co znacznie upraszacza sprawę
Oczywiście zapytanie nie uwzględnia numerów przeniesionych z innych sieci, co jest obecnie możliwe

C. utworz zestawienie zawierajace informacje o liczbach kandydatów z poszczególnych woj. Wymien nazwy woj z ktorych zglosilo sie wiecej kandydatów niz 20.
SELECT woj, COUNT(*) FROM kandydat GROUP BY woj; - wypisuje liczbę kandydatów dla wszystkich województw.
SELECT woj, COUNT(*) FROM kandydat GROUP BY woj HAVING COUNT(*) > 20; - wypisuje liczbę kandydatów dla województw z których zgłosiło się więcej niż 20 osób

D. Utworz zestawienie zawierajace liste kandydatow (imie, nazwisko, woj) ktorzy maja wyksztalcenie srednie lub wyzsze,
interesuja sie grami komputerowymi, i nie przekroczyli 50 roku zycia.
Podaj ilu w srod nich jest z wyksztalcenie wyzszym a ktore ze srednim.

SELECT imie, nazwisko, woj FROM kandydat
WHERE ((wyksztalcenie = 'srednie') OR (wyksztalcenie =
AND gry_komputerowe = 'T'
AND to_char(data_urodzenia, 'YYYY') >= (2008 - 50); -- sprawdzamy tylko rocznik, dla dokładnej daty można napisać np. AND data_urodzenia > '1958/11/07';

SELECT COUNT(*) FROM kandydat
WHERE (wyksztalcenie = 'srednie') -- liczba osób z wykształceniem średnim
AND gry_komputerowe = 'T'
AND to_char(data_urodzenia, 'YYYY') >= (2008 - 50);

SELECT COUNT(*) FROM kandydat
WHERE (wyksztalcenie = 'wyzsze') -- liczba osób z wykształceniem wyższym
AND gry_komputerowe = 'T'
AND to_char(data_urodzenia, 'YYYY') >= (2008 - 50);

E. Organizator programu telewizyjnego planuje zakwalifikować do programu tylko te osoby ktore interesuja sie polityka lub sportem.
ponadto dla kobiet wymagany jest wzrost co najmniej 168 cm, a w przypadku mezczyzn 175 cm powiedz ile kobiet i ilu mezczyzn spelnia wymagane kryteria.

SELECT COUNT(*) FROM kandydat
WHERE ((polityka = 'T') OR (sport = 'T'))
AND (imie LIKE '%a') -- liczba kobiet
AND (wzrost >= 168);

SELECT COUNT(*) FROM kandydat
WHERE ((polityka = 'T') OR (sport = 'T'))
AND (NOT (imie LIKE '%a') AND (wzrost >= 175) ); -- liczba mężczyzn

W przypadku gdy wszytskie dane nie są zapisane w jednej tablicy np mamy tylko kod województwa a nazwa jest w innej tabeli należy najpierw dokonać złączenia tabel
Niech
CREATE TABLE kandydat (
imie varchar(20),
nazwisko varchar(30),
tel varchar(15),
kodwoj char(2), -- kod województwa
wykształcenie varchar(20), -- nazwa wykształcenia
data_urodzenia date,
-- zainteresowania
gry_komputerowe char(1), -- T(ak) lub N(ie)
polityka char(1), -- T(ak) lub N(ie)
sport char(1), -- T(ak) lub N(ie)
wzrost integer -- wzrost w cm
);


CREATE TABLE wojew (
kodwoj char(2),
nazwaj varchar(20)
);
wtedy C.
SELECT w.nazwa, COUNT(*) FROM kandydat k, wojew w WHERE w.kodwoj = k.kodwoj
GROUP BY w.nazwa; - wypisuje liczbę kandydatów dla wszystkich województw.

SELECT w.nazwa, COUNT(*) FROM kandydat k, wojew w WHERE w.kodwoj = k.kodwoj
GROUP BY w.nazwa;
HAVING COUNT(*) > 20; -- wypisuje liczbę kandydatów dla województw z których zgłosiło się więcej niż 20 osób

analogicznie może być kod wykształcenia i tablica ze słownikiem wykształcenia
karo358
Użytkownik
Użytkownik
Posty: 34
Rejestracja: 16 wrz 2008, o 19:40
Płeć: Mężczyzna
Lokalizacja: łódź
Podziękował: 3 razy

kwerendy

Post autor: karo358 »

a mogloby mi ktos to przelozyc na acessa
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

kwerendy

Post autor: spajder »

przecież access obsługuje SQLa... po prostu to wklej
ODPOWIEDZ