Vízállás megoldás további gyakorló feladatokkal
Csak a 7. feladatot néztük meg, a többit következő órán.
/*Vízállás
1. feladat*/
CREATE DATABASE vizallas
CHARACTER SET utf8
COLLATE utf8_hungarian_ci;
/*3. feladat
Adja meg lekérdezés segítségével, hogy 2002 szilveszterén (2002. 12. 31.)
az egyes településeken milyen vízállást mértek!
A lekérdezés a város nevét és a vízállást jelenítse meg! */
SELECT meres.varos, meres.vizallas
FROM meres
WHERE meres.datum = '2002-12-31';
/*4. feladat
Lekérdezés segítségével jelenítse meg, hogy mely városok szerepelnek az adatbázisban!
A városok nevét rendezze ábécé sorrendbe, és mindegyik csak egyszer jelenjen meg! */
SELECT meres.varos
FROM meres
GROUP BY meres.varos
ORDER BY meres.varos;
/*5.feladat
Készítsen lekérdezést, amely megadja, hogy a Tiszán
hány alkalommal mértek 9 méternél nagyobb vízállást! */
SELECT COUNT(meres.id)
FROM meres
WHERE (meres.folyo like 'Tisza') AND (meres.vizallas > 900);
/*6. feladat
Készítsen lekérdezést, amely megadja, hogy Budapesten a legmagasabb vízállást mely napon mérték! */
SELECT datum
FROM meres
WHERE varos like 'Budapest'
ORDER BY vizallas DESC
LIMIT 1 ;
////////////////////////////////////////////////////////////////////////
/*RÁVEZETŐ FELADATOK (nem a helyes megoldások):
Ez a megoldás kiírja az összes mérési dátumot Budapesten (nem felel meg a feladatnak):*/
SELECT datum
FROM meres
WHERE meres.varos like 'Budapest';
/*Ez kiírja a helyes maximális vízállást Budapesten (nem ezt a mezőt kérte a feladat).*/
SELECT max(vizallas)
FROM meres
WHERE meres.varos like 'Budapest';
/*Ez kiírja a helyes maximális vízállást Budapesten,
viszont előtte a budapesti összes dátumból az első jelenik csak meg. (rossz megoldás)*/
SELECT datum, max(vizallas)
FROM meres
WHERE meres.varos like 'Budapest';
/*Ez kiírja a helyes maximális vízállást Budapesten (nem ezt kérte a feladat).
(Emellé már nem tudunk más mezőt kiírni korrekten.)*/
SELECT max(vizallas)
FROM meres
GROUP BY varos
HAVING varos = 'Budapest';
/*Végképp rossz megoldás:
Ez kiírja a helyes maximális vízállást Budapesten, de a mellette levő dátum
a táblába bevitt legelső dátum lesz - és ezek nem tartoznak egymáshoz.*/
/*SELECT max(vizallas), datum
FROM meres
GROUP BY varos
HAVING varos = 'Budapest';*/
/*Az alselect megkeresi a maximális budapesti vízállást és a fő lekérdezés kiírja azt a két dátumot,
amikor az volt a vízállás.*/
SELECT datum
FROM meres
WHERE vizallas = (SELECT max(vizallas) FROM meres WHERE meres.varos like 'Budapest');
/*Az alselect megkeresi a maximális budapesti vízállást és a fő lekérdezés kiírja azt az első dátumot,
amikor az volt a vízállás.*/
SELECT datum
FROM meres
WHERE vizallas = (SELECT max(vizallas) FROM meres WHERE meres.varos like 'Budapest')
ORDER BY datum desc
LIMIT 1;
////////////////////////////////////////////////////////////////////////
/*7. feladat
Az adatbázisban nyilvántartott legmagasabb vízállás 928 cm.
Készítsen lekérdezést, amely megadja, hogy ezzel egy napon
a Duna mentén melyik településen milyen vízállást mértek!*/
SELECT meres.datum, meres.varos
FROM meres
WHERE (meres.folyo like 'Duna') AND
(meres.datum = (SELECT meres.datum FROM meres WHERE (meres.vizallas = 928)));
/*8. feladat
Készítsen lekérdezést, amely folyónként kiírja a vízállásokat,
és a mérés dátumát, a dátum szerinti növekvő sorrendben. */
select meres.folyo, meres.vizallas, meres.datum
from meres
order by folyo, datum;
/*9. feladat
Készítsen lekérdezést, amely folyónként kiírja a legalacsonyabb vízállást. */
select folyo, min(meres.vizallas)
from meres
group by folyo;
Nincsenek megjegyzések:
Megjegyzés küldése