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és GROUP 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 az i_rapid_dev oszlopban az összes érték maximumát akarjuk (mert nincs hol vagy van záradék).
  • (2) FROM: a coding_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 a t_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ényt i_highest_gradenéven.
  • (2) FROM: a coding_languages táblázat megadása adataink forrásaként.
  • (3) GROUP BY: a PostgreSQL értesítése, hogy csoportosulunk. A MAX 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 a t_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.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.