2021. december 6., hétfő

2021.12.06. AB - Vízállás megoldás

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