Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Podczas tworzenia zagregowanych zapytań narzędzia Projektant zapytań i widoków (Visual Database Tools) przyjmuje pewne założenia, aby można było utworzyć prawidłowe zapytanie. Jeśli na przykład tworzysz zapytanie agregujące i oznaczysz kolumnę danych dla danych wyjściowych, projektant zapytań i widoków automatycznie tworzy część GROUP BY kolumny klauzuli, dzięki czemu nie próbujesz przypadkowo wyświetlić zawartości pojedynczego wiersza w podsumowaniu.
Użyj grupy według
Projektant zapytań i widoków używa następujących wskazówek dotyczących pracy z kolumnami:
Po wybraniu opcji Grupuj według lub dodaniu funkcji agregującej do zapytania wszystkie kolumny oznaczone jako dane wyjściowe lub używane do sortowania są automatycznie dodawane do klauzuli
GROUP BY. Kolumny nie są automatycznie dodawane do klauzuliGROUP BY, jeśli są już częścią funkcji agregującej.Jeśli nie chcesz, aby określona kolumna była częścią
GROUP BYklauzuli, musisz ją ręcznie zmienić, wybierając inną opcję w kolumnie Grupuj według w okienku Kryteria. Jednak projektant zapytań i widoków nie uniemożliwia wybrania opcji, która może spowodować uruchomienie zapytania.Jeśli ręcznie dodasz kolumnę danych wyjściowych zapytania do funkcji agregującej w okienku Kryteria lub SQL, projektant zapytań i widoków nie usunie automatycznie innych kolumn wyjściowych z zapytania. W związku z tym należy usunąć pozostałe kolumny z danych wyjściowych zapytania lub uczynić je częścią
GROUP BYklauzuli lub funkcji agregującej.
Po wprowadzeniu warunku wyszukiwania w kolumnie Filtr w okienku Kryteria, Projektant zapytań i widoków przestrzega następujących reguł:
Jeśli kolumna Grupuj według siatki nie jest wyświetlana (ponieważ nie określono jeszcze kwerendy agregującej), warunek wyszukiwania zostanie umieszczony w klauzuli
WHERE.Jeśli jesteś już w zagregowanym zapytaniu i wybrano opcję Gdzie w kolumnie Grupuj według, warunek wyszukiwania zostanie umieszczony w klauzuli
WHERE.Jeśli kolumna Grupuj według zawiera dowolną wartość inną niż Where, warunek wyszukiwania zostanie umieszczony w klauzuli
HAVING.
Używanie klauzul HAVING i WHERE
Poniższe zasady opisują sposób odwoływanie się do kolumn w zagregowanym zapytaniu w warunkach wyszukiwania. Ogólnie rzecz biorąc, można użyć kolumny w warunku wyszukiwania, aby filtrować wiersze, które powinny zostać podsumowane (klauzula WHERE ) lub określić, które pogrupowane wyniki pojawiają się w końcowych danych wyjściowych (klauzula HAVING ).
Poszczególne kolumny danych mogą być wyświetlane w klauzuli
WHERElubHAVINGw zależności od sposobu ich użycia w innym miejscu zapytania.WHEREKlauzule służą do wybierania podzestawu wierszy do podsumowania i grupowania, a tym samym są stosowane przed zakończeniem grupowania. W związku z tym można użyć kolumny danych wWHEREklauzuli, nawet jeśli nie jest częściąGROUP BYklauzuli lub zawartej w funkcji agregującej. Na przykład poniższa instrukcja wybiera wszystkie tytuły, które kosztują ponad 10,00 USD, i oblicza średnią cenę.SELECT AVG(price) FROM titles WHERE price > 10;Jeśli utworzysz warunek wyszukiwania, który obejmuje również kolumnę używaną
GROUP BYw klauzuli lub funkcji agregującej, warunek wyszukiwania może pojawić się jakoWHEREklauzula lub klauzulaHAVING— możesz zdecydować, które podczas tworzenia warunku. Na przykład poniższa instrukcja tworzy średnią cenę tytułów dla każdego wydawcy, a następnie wyświetla średnią dla wydawców, w których średnia cena jest większa niż 10,00 USD:SELECT pub_id, AVG(price) FROM titles GROUP BY pub_id HAVING (AVG(price) > 10);Jeśli używasz funkcji agregującej w warunku wyszukiwania, warunek obejmuje podsumowanie i dlatego musi być częścią klauzuli
HAVING.