Zadanie 5.1 (0-2)
Biblioteka podręczników
1. kwerenda: SELECT TOP 1 s.imie & " " & s.nazwisko AS Personalia, COUNT(*) AS Il_ksiazek FROM Wypozyczenia AS w INNER JOIN Studenci AS s ON w.pesel=s.pesel GROUP BY s.imie & " " & s.nazwisko ORDER BY 2 DESC; 2. kwerenda: SELECT s.imie & " " & s.nazwisko AS Personalia, tytul FROM Wypozyczenia AS w INNER JOIN Studenci AS s ON w.pesel=s.pesel WHERE s.imie & " " & s.nazwisko="KRZYSZTOF LEWANDOWSKI"; Pobierz rozwiązanie
Zadanie 5.2 (0-2)
Biblioteka podręczników
Rozwiązanie w jednej kwerendzie: SELECT ROUND((SELECT COUNT(pesel) FROM Meldunki)/(SELECT COUNT(*) FROM (SELECT DISTINCT id_pok FROM Meldunki)),4) AS srednia FROM 1; FROM 1 występuje tutaj jedynie po to, aby można było taką kwerendę wykonać. Zawartość tej tabeli nas nie interesuje, więc zamiast "1" możemy podać jakąkolwiek inną istniejącą tabelę. Alternatywnie można rozbić to zapytanie na dwa osobne i wynik policzyć ręcznie, wykonując odpowiednie dzielenie. Pobierz rozwiązanie
Zadanie 5.3 (0-2)
Biblioteka podręczników
Funkcja IIF jest używana w celu określenia czy warunek wyrażenia jest spełniony, czy nie. Jeśli warunek wyrażenia jest spełniony, funkcja IIf zwraca jedną wartość, a jeśli nie jest spełniony, funkcja IIf zwraca inną wartość: IIF ( wyrażenie , jeśli prawda , jeśli_fałsz ) Funkcja RIGHT zwraca określoną ilość znaków od prawej strony podanego ciągu: RIGHT ( ciąg, długość ) Funkcja LEFT działa analogicznie, lecz zwraca znaki od lewej strony. SELECT SUM(IIF(LEFT(RIGHT(pesel,2),1) Mod 2=0,1,0)) AS Il_kobiet, SUM(IIF(LEFT(RIGHT(pesel,2),1) Mod 2=1,1,0)) AS Il_mezczyzn FROM Studenci; Pobierz rozwiązanie
Zadanie 5.4 (0-3)
Biblioteka podręczników
SELECT nazwisko, imie FROM Studenci WHERE pesel not in (SELECT pesel FROM Meldunki) ORDER BY 1; Pobierz rozwiązanie
Zadanie 5.5 (0-3)
Biblioteka podręczników
Kwerenda 5_1: SELECT w.tytul & m.id_pok, COUNT(*)-1 AS za_duzo_o FROM Wypozyczenia AS w INNER JOIN Meldunki AS m ON w.pesel=m.pesel GROUP BY w.tytul & m.id_pok HAVING COUNT(*)>1; Kwerenda 5: SELECT ((SELECT COUNT(*) AS il_ksiazek FROM Wypozyczenia)-(SELECT SUM(za_duzo_o) FROM 5_1)) AS wypozyczone FROM 1; Sytuacja taka sama jak w zadaniu 5.2: FROM 1 występuje tutaj jedynie po to, aby można było taką kwerendę wykonać, zawartość tej tabeli jest nieistotna. Pobierz rozwiązanie
Zadanie 6.1 (0-3)
Szyfr Cezara
def szyfr(ciag, k):
nowy_ciag = ""
for lit in ciag:
nowy_ord = 65+(ord(lit)-65+k) % 26
nowy_ciag += chr(nowy_ord)
return nowy_ciag
with open("wyniki_6_1.txt", "w") as wyjscie:
with open("DANE_PR2/dane_6_1.txt") as wejscie:
for linia in wejscie:
if not linia:
continue
linia = linia.strip()
wyjscie.write(szyfr(linia, 107)+"\n")
Pobierz rozwiązanie
Zadanie 6.2 (0-4)
Szyfr Cezara
def odszyfr(ciag, k):
nowy_ciag = ""
for lit in ciag:
nowy_ord = 65+(ord(lit)-65-k) % 26
nowy_ciag += chr(nowy_ord)
return nowy_ciag
with open("wyniki_6_2.txt", "w") as wyjscie:
with open("DANE_PR2/dane_6_2.txt") as wejscie:
for linia in wejscie:
if not linia:
continue
linia = linia.strip()
try:
ciag, k = linia.split()
except:
k = 0
wyjscie.write(odszyfr(ciag, int(k))+"\n")
Pobierz rozwiązanie
Zadanie 6.3 (0-5)
Szyfr Cezara
def szyfr(ciag, k):
nowy_ciag = ""
for lit in ciag:
nowy_ord = 65+(ord(lit)-65+k) % 26
nowy_ciag += chr(nowy_ord)
return nowy_ciag
def szukaj(ciag, ciag2):
def zdobadz_klucz(znak, znak2):
if ord(znak2) < ord(znak):
return 26-(ord(znak)-ord(znak2))
else:
return abs(ord(znak2)-ord(znak))
roz = zdobadz_klucz(ciag[0], ciag2[0])
if ciag2 != szyfr(ciag, roz):
return False
return True
with open("wyniki_6_3.txt", "w") as wyjscie:
with open("DANE_PR2/dane_6_3.txt") as wejscie:
for linia in wejscie:
linia = linia.strip()
ciag1, ciag2 = linia.split()
if not szukaj(ciag1, ciag2):
wyjscie.write(ciag1+"\n")
Pobierz rozwiązanie