Bevezetés
ebben a cikkben megtanuljuk használni az aggregate Max függvényt a Postgres SQL parancsokban több szempontból, hogy mélyebb megértést kapjunk. Itt megvitatjuk:
- mi? Kezdő szempontból mit csinál a MAX funkció?
- miért? Milyen helyzetekben használjuk a Max () függvényt?
- hogyan? Hogyan használjuk ezt a funkciót az SQL-ben?
- bővebben a GROUP BY construct-ot is felhasználjuk.
előfeltételek
- kezdő szintű megértése írásban SQL PostgreSQL (vagy Oracle, MySQL, MS SQL Server, stb.) a PG Admin eszköz vagy más db adminisztrációs eszköz használatával, vagy kóddal vagy szkript/kódolási nyelvekkel, például PHP, Python, Javascript, Java, C#, ASP.Net, VB.Net Ruby, Node.js, stb.), amelyek adatbázis-kapcsolatot biztosítanak, valamint egy módszert az adatbázis SQL lekérdezéseinek küldésére, adatok beszerzésére vagy az adatbázis módosítására.
- néhány alapvető SQL (PL/SQL) utasítás használatának megértése, mint például a
SELECT
,FROM
ésGROUP BY
. - annak ismerete, hogy mi a karakterlánc és a függvény.
mi a MAX () függvény és hogyan működik?
a Postgres MAX()
függvény a legmagasabb (maximális) értéket adja vissza egy számkészletből.
szintaxis
1
|
i_highest_of_set: = MAX (set_of_numbers);
|
miért és mikor használjuk a MAX () függvényt?
minden alkalommal, amikor van egy sor szám, ahol szeretné tudni, hogy melyik a halmaz a legmagasabb halmaz.
kezdjük egy egyszerű példával
kezdjük egy könnyen érthető példával. Kezdeti adatkészletünk egy coding_languages nevű táblázat.
id_tech | t_name | i_rapid_dev |
---|---|---|
0 | Python | 7 |
1 | Java | 5 |
2 | PHP | 9 |
3 | Javascript | 8 |
szoftverfejlesztő cégünknél a fenti táblázat coding_languages
néven három mezővel rendelkezik, többek között:
-
id_tech
ez a mi egyedi azonosítónk. -
t_name
a kódolási nyelv neve. -
i_rapid_dev
egy egész értékelés arról, hogy egy átlagos kódoló milyen gyorsan fejlődhet a nyelv használatával.
a cél az, hogy megtudja, melyik nyelv rendelkezik a legmagasabb minősítéssel a gyors fejlődés szempontjából (i_rapid_dev
). Írjuk meg SQL szkriptünket, hogy a MAX
függvényt használjuk annak a t_name
– nek a lekérésére, amelynek a legmagasabb értéke van a PostgreSQL adatbázis-rekordkészlet i_rapid_dev
oszlopában:
1
2 3 4 5 6 7 8 |
válasszon
id_tech , t_name , MAX (i_rapid_dev) a coding_languages csoport i_rapid_dev; |
Megjegyzés A fenti SQL példához: itt használjuk az SQL csoportok ismereteit. Ezt így gondolhatja: ha egynél több szám maximumát szeretné megtalálni, akkor figyelembe kell vennie egy számkészletet.
hogyan működik a fenti SQL utasítás? Lépésről lépésre fogjuk megtenni:
- (1)
SELECT
: azt mondjuk a PostgreSQL SQL motorjának, hogy azi_rapid_dev
oszlopban az összes érték maximumát akarjuk (mert nincs hol vagy van záradék). - (2)
FROM
: acoding_languages
tábla megadása az adatok lekéréséhez. - (3)
GROUP BY
: mondja meg a Postgres – nek, hogy csoportosítani akarjuk az adatokat. A MAX() függvény, mivel aggregált függvény, adataink csoportosítását igényli.
a fenti lekérdezés visszatér: / id_tech | t_name / i_rapid_dev||:—:|—|————:| / 2 / PHP / 9 /
most már tudjuk, hogy a PHP a leggyorsabb a gyors fejlődés szempontjából.
egy másik példa a “Max” SQL funkció használatára a PostgreSQL-ben
a mini projekt: az alkalmazottak osztályozták a vállalatunknál használt technológiákat, és szeretnék tudni a legmagasabb fokozatú technológiát. Itt megvizsgáljuk a MAX()
egy másik viszonylag egyszerű használatát, miközben bemutatjuk a” HAVING ” kulcsszót. Itt van a “nyers” adatkészletünk a “technológiák”táblázat nevével:
id_tech | t_name_user | t_name_tech | t_category_tech | i_grade |
---|---|---|---|---|
0 | Ted | Java | Lang | 4 |
1 | Bif | Mongo | NoSQL | 16 |
2 | Susan | MySQL | RDB | 8 |
3 | Tim | PostgreSQL | RDB | 16 |
4 | Gary | Python | Lang | 20 |
5 | Sammy | PHP | nyelv | 12 |
tervezzük meg, hogyan kell eljárni. Olyan lekérdezést akarunk létrehozni, amely egynél több dolgot fog tenni, beleértve:
- (1) csak azokat a sorokat vegye figyelembe adatkészletünkben, ahol a _t_categorytech mező (oszlop) értéke megegyezik a “Lang”értékkel. Itt jön jól a birtoklási záradék. 3 sor lesz. Látod, miért? Tipp: keresse meg a fenti táblázatban a “Lang” értéket. Észrevetted, hogy hárman vannak? Melyik rovatban vannak?
- (2) adja vissza a _t_nametech mező értékét a 3 sorhoz, mert tudni akarjuk, hogy az osztályzatok mely technológiákkal járnak.
- (3) nem érdekel, hogy ki végezte el az értékelést, ezért nem említjük a _t_nameuser oszlopot.
- (4) A _igrade oszlop segítségével kapja meg a 3 sor értékeinek maximális összegét.
- (5) a megfelelő oszlopok csoportosításához használja a csoportosítás lehetőséget.
a fenti SQL elemzése:
- (1)
SELECT
: szűrjük a Postgres táblázatot: (a) mutassa meg at_name_tech
oszlopot, (b) számítsa ki az egyes technológiák osztályainak összegét (Sum(i_grade)
), és (c) mutassa meg ezen összegek maximumát (Max(i_sum_of_grades)
), és nevezze meg az eredményti_highest_grade
néven. - (2)
FROM
: acoding_languages
táblázat megadása adataink forrásaként. - (3)
GROUP BY
: a PostgreSQL értesítése, hogy csoportosulunk. AMAX
függvény megköveteli, hogy csoportosítsuk azokat az adatokat, amelyeket a Postgres belsőleg összegez, és megtaláljuk a legmagasabb értéket. - (4)
HAVING
: itt utasítjuk a PostgreSQL-t, hogy szűrje azokat a sorokat, amelyekben at_category_tech
mezőben “Lang” van.
a fenti lekérdezés visszatér:
t_name_tech | t_category_tech | i_grade |
---|---|---|
PHP | nyelv | 12 |
Megjegyzések
- miért neveztünk el néhány változót és táblázatoszlopot “i” vagy “t”előtaggal? Az “I” az egész számot, a “t” pedig a szöveget vagy a karakterláncot jelenti.
- meghívjuk Önt, hogy keresse meg más cikkeinket, amelyek az erőteljes
GROUP BY
Postgres záradékot használják.
következtetés
itt megtudtuk, mikor és hogyan a legjobb a MAX()
függvény használata a PostgreSQL-ben, hogy megtaláljuk a legmagasabb értékű számot egy számkészletben. Mind a kezdő szintű, mind a nehezebb példákat használtuk, a nehézségi szint növelése érdekében, hogy a tanulási folyamat a lehető legegyszerűbb legyen, mert az SQL időnként nehéz lehet a fejünk körül, különösen akkor, ha a GROUP BY
és a HAVING
záradékokat használjuk az adatok részhalmazainak kezelésére.