Delen via


Werken met kolommen in statistische query's (Visual Database Tools)

van toepassing op:SQL Server-

Wanneer u aggregatiequery's maakt, maakt het Hulpprogramma voor Query en View Designer (Visual Database Tools) bepaalde aannames om een geldige query te kunnen construeren. Als u bijvoorbeeld een aggregatiequery maakt en een gegevenskolom markeert voor uitvoer, maakt de Query- en Weergaveontwerper automatisch de kolom onderdeel van de GROUP BY-clausule, zodat u niet per ongeluk probeert de inhoud van een afzonderlijke rij in een samenvatting weer te geven.

Gebruik 'Group By'-functie

De ontwerpfunctie voor query's en weergaven gebruikt de volgende richtlijnen voor het werken met kolommen:

  • Wanneer u de optie Groeperen op kiest of een statistische functie toevoegt aan een query, worden alle kolommen die zijn gemarkeerd voor uitvoer of voor sortering automatisch toegevoegd aan de GROUP BY component. Kolommen worden niet automatisch toegevoegd aan de GROUP BY clausule als ze al deel uitmaken van een aggregatiefunctie.

    Als u niet wilt dat een bepaalde kolom deel uitmaakt van de GROUP BY component, moet u deze handmatig wijzigen door een andere optie te selecteren in de kolom Groeperen op van het deelvenster Criteria. De ontwerpfunctie voor query's en weergaven voorkomt echter niet dat u een optie kiest die kan resulteren in een query die niet wordt uitgevoerd.

  • Als u handmatig een queryuitvoerkolom toevoegt aan een aggregatiefunctie in het deelvenster Criteria of het SQL-deelvenster, worden andere uitvoerkolommen niet automatisch uit de query verwijderd. Daarom moet u de resterende kolommen verwijderen uit de query-uitvoer of ze onderdeel maken van de GROUP BY component of van een statistische functie.

Wanneer u een zoekvoorwaarde invoert in de kolom Filter van het deelvenster Criteria, volgt de query- en weergaveontwerper de volgende regels:

  • Als de kolom Group By van het raster niet wordt weergegeven (omdat u nog geen aggregatiequery hebt opgegeven), wordt de zoekvoorwaarde in de WHERE clausule geplaatst.

  • Als u al een samenvattende query hebt en de optie Waar in de kolom Groeperen op hebt geselecteerd, wordt de zoekvoorwaarde in de WHERE clausule geplaatst.

  • Als de kolom Group By een andere waarde bevat dan Waar, wordt de zoekvoorwaarde in de HAVING component geplaatst.

De HAVING- en WHERE-componenten gebruiken

In de volgende principes wordt beschreven hoe u kunt verwijzen naar kolommen in een statistische query in zoekvoorwaarden. Over het algemeen kunt u een kolom in een zoekvoorwaarde gebruiken om de rijen te filteren die moeten worden samengevat (een WHERE component) of om te bepalen welke gegroepeerde resultaten worden weergegeven in de uiteindelijke uitvoer (een HAVING component).

  • Afzonderlijke gegevenskolommen kunnen worden weergegeven in de WHERE of HAVING component, afhankelijk van hoe ze elders in de query worden gebruikt.

  • WHERE voorwaarden worden gebruikt om een subset van rijen te selecteren voor het samenvatten en groeperen en worden dus toegepast voordat er wordt gegroepeerd. Daarom kunt u een gegevenskolom in een WHERE component gebruiken, zelfs als deze geen deel uitmaakt van de GROUP BY component of deel uitmaakt van een statistische functie. Met de volgende instructie worden bijvoorbeeld alle titels geselecteerd die meer dan $ 10,00 kosten en wordt de gemiddelde prijs berekend.

    SELECT AVG(price)
    FROM titles
    WHERE price > 10;
    
  • Als u een zoekvoorwaarde maakt waarbij een kolom ook wordt gebruikt in een GROUP BY component of statistische functie, kan de zoekvoorwaarde worden weergegeven als een WHERE component of een HAVING component. U kunt bepalen welke voorwaarde u moet maken wanneer u de voorwaarde maakt. De volgende instructie maakt bijvoorbeeld een gemiddelde prijs voor de titels voor elke uitgever en geeft vervolgens het gemiddelde weer voor de uitgevers waarin de gemiddelde prijs hoger is dan $ 10,00:

    SELECT pub_id,
           AVG(price)
    FROM titles
    GROUP BY pub_id
    HAVING (AVG(price) > 10);
    
  • Als u een statistische functie in een zoekvoorwaarde gebruikt, omvat de voorwaarde een samenvatting en moet deze daarom deel uitmaken van de HAVING component.