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