Praca z kolumnami w kwerendach agregacji
Podczas tworzenia kwerendy agregującej Kwerendy i narzędzi projektanta widoku pewne założenia tak, aby go można konstruować prawidłową kwerendą.Na przykład jeśli tworzenia kwerendy agregującej kolumna danych dla danych wyjściowych, kwerendy i widoku Projektant automatycznie powoduje części kolumn w klauzuli GROUP BY, tak aby nie przypadkowo spróbujesz wyświetlić zawartości pojedynczego wiersza w podsumowaniu.
Za pomocą grupy przez
Kwerendy i widoku Projektant używa następujących wytycznych do pracy z kolumnami:
Wybierz opcję Grupuj według lub dodaniu funkcji agregującej do kwerendy, wszystkie kolumny oznaczone do wyprowadzenia lub wykorzystywane do sortowania są automatycznie dodawane do klauzuli GROUP BY.Kolumny nie są automatycznie dodawane do klauzuli GROUP BY, jeśli występują już w funkcji agregującej.
Jeśli nie chcesz, aby dana kolumna być częścią klauzuli GROUP BY, należy ręcznie zmienić go, wybierając inną opcję w kolumnie Grupuj według w okienku kryteriów.Jednakże kwerendy i widoku Projektant nie uniemożliwią wybór opcji, która może skutkować kwerendy, która nie będzie działać.
W przypadku ręcznego dodania kolumny wyjociowej kwerendy do łącznej funkcjonować w albo kryteria lub okienku SQL, kwerendy i widoku Projektant nie automatycznie usunąć inne kolumny wyjociowe kwerendy.W związku z tym, należy usunąć pozostałe kolumny z danych wyjociowych kwerendy albo dodać je do klauzuli GROUP BY lub funkcji agregującej.
Po wprowadzeniu warunek wyszukiwania w kolumnie Filtr w okienku kryteriów kwerendy i widoku Projektant obowiązują następujące reguły:
Jeśli Group By kolumny siatki nie jest wyświetlana (ponieważ nie określono jeszcze kwerendy agregującej), warunek wyszukiwania jest umieszczany w klauzuli WHERE.
Jeśli już kwerendę agregującą oraz wybrano opcję gdzie w Group By kolumny, warunek wyszukiwania jest umieszczany w klauzuli WHERE.
Jeśli Group By kolumna zawiera wartości inne niż gdzie, warunek wyszukiwania jest umieszczany w klauzuli HAVING.
Za pomocą HAVING i gdzie klauzul
Następujące zasady opisują sposoby odwoływania kolumn w kwerendzie agregującej w warunkach wyszukiwania.Ogólnie rzecz biorąc, można użyć kolumny w warunku wyszukiwania, aby filtrować wiersze, które powinny być podsumowane (klauzula WHERE) lub do ustalenia, które pogrupowane wyniki są wyświetlane w końcowych danych wyjściowych (klauzula HAVING).
Poszczególne kolumny danych mogą występować WHERE albo klauzuli HAVING, w zależności od tego, w jaki sposób one są używane w innych miejscach kwerendy.
W przypadku gdy klauzule są używane do wybierania podzbioru wierszy w celu sumowania i grupowania, a zatem są stosowane przed jakiejkolwiek operacji grupowania.W związku z tym można użyć kolumny danych w klauzuli WHERE, nawet jeśli nie jest częścią klauzuli GROUP BY lub w funkcji agregującej.Na przykład następująca instrukcja wybiera wszystkie tytuły o cenie wyższej niż 10,00 dolarów i podaje orednią cenę:
SELECT AVG(price) FROM titles WHERE price > 10
Jeśli warunek wyszukiwania, który obejmuje również używane w klauzuli GROUP BY lub funkcji agregującej kolumny warunek wyszukiwania może mieć postać klauzuli WHERE albo HAVING — można zdecydować, które, gdy utworzyć warunek.Na przykład następująca instrukcja generuje średnie ceny tytułów każdego wydawcy, a następnie wyświetla średnią dla wydawców, w których średnia cena jest większa niż 10,00 dolarów:
SELECT pub_id, AVG(price) FROM titles GROUP BY pub_id HAVING (AVG(price) > 10)
Jeśli w warunku wyszukiwania używana jest funkcja agregująca, warunek obejmuje podsumowanie i dlatego musi być częścią klauzuli HAVING.