Operátorok esetében, összeolvad, töröl, 3. oldal

Számolja ki a Rostovból érkező járatok teljes számát és a járatok számát, amelyek rendeltetése nem Moszkva.

Ebben a feladatban is két mintavételezést kell végrehajtani, az egyik minta a második részhalmaza. Ezért a számított oszlop, amellyel csoportosítást végezhet, nem illeszkedik közvetlenül. Ez alkalmas volt az előző probléma megoldására, amikor a készletet felosztották a saját diszjunkt szubszekvenciájukra, amelyek mindegyikére aggregációt hajtottak végre.

A probléma megoldásához a számot kiszámolhatjuk a teljes készleten, és felhasználhatunk egy alanyi lekérdezést a részhalmaz értékének kiszámításához (a második hivatkozás a táblázatra), vagy CASE használatával együtt az aggregált függvényt használva, hogy elkerüljük a táblázat újbóli olvasását. Lássuk, hogy az optimalizáló hogyan értékeli ezeket a beállításokat.

Alátámasztás használata

CASE használata összeadott funkcióval

Az eredmény természetesen ugyanaz lesz:


de a várakozások szerint a második kérelem költsége fele volt.

Összehasonlíthatja a tényleges végrehajtási időt, ha elegendő mennyiségű adatot generál.

A második lehetőség kompatibilisabban írható, ha a NULLIF funkciót használja - a CASE használatának rövidített változata:

A NULLIF függvény NULL értéket ad, ha argumentuma egyenlő, vagy az első argumentum másként.

A megoldás azt a tényt használja, hogy az aggregált függvények nem veszik figyelembe a COUNT függvény argumentumában megjelenő NULL értékeket, ha az érkezési város egyenlő "Moszkva" -val.

Előző [Típusátalakítás és CAST operátor]

[Adatmódosítás-üzemeltetők] Következő

A bemutató frissítve lett
néhány nappal ezelőtt