Oracle levert een aantal manieren om COUNT functies te schrijven en te gebruiken dat een GROUP BY-clausule bevatten . Hoewel de functie AANTAL in Procedurele Taal - Structured Query Language - PL /SQL - heeft een standaard syntax en definitie , het toepassen van verschillende parameters met betrekking tot de GROUP BY-component maakt COUNT /GROUP BY query's aan een verscheidenheid van eenvoudige produceren om complexe resultaten . Kennis van de verschillende criteria - de regels - voor het schrijven COUNT /GROUP BY vragen zullen u helpen deze elementen te combineren tot correcte , samenhangende Pl /SQL- statements . Feiten De functie AANTAL telt databaserijen volgens de parameters die u opgeeft in een SELECT | FROM | WHERE query en retourneert een getal resultaat voor rijen die niet NULL , of die rijen met waarden . Een GROUP BY-component sorteert door de waarden van de query en organiseert resultaten op basis van criteria die u verstrekt . De basis syntax voor dit type query is : SELECT COUNT ( expressie ) FROM tablesWHERE predikaten ; GROUP BY predikaten ; Identificatie Elk criterium gaat de regels zowel aggregaat en nonaggregate uitdrukkingen , evenals statistische functies . Aggregaat expressie is een statement , zoals SELECT , dat een statistische functie zoals COUNT een enkel resultaat volgens groepen rijen , in plaats van enkele rijen terug gebruikt . Nonaggregate expressies zijn elementen zoals database- rij namen , bijvoorbeeld " customer_name " die het doel van een statistische functie of expressie . Een algemeen criterium voor het schrijven is dat wat uitdrukking of uitdrukkingen nonaggregate u in uw SELECT-component , moet je ook moet ook in je GROUP BY-component : SELECT customer_name , COUNT ( DISTINCT stad) als " Distinct Cities " , vAN customersGROUP DOOR customer_name ; aanvullende criteria Oracle SQL definieert een aantal variaties op het algemene criterium voor het maken COUNT /GROUP BY queries . Ten eerste kan je niet onder een statistische functie in een GROUP BY-component . Bijvoorbeeld , als je schrijft een GROUP BY-component zoals " GROUP BY cust_nbr , COUNT ( order_nbr ) ; " het resultaat zal een foutmelding . Bovendien, als uw SELECT-instructie bevat een constante of een scalaire functie , kunt u wel of niet een van beide uit je GROUP BY-component zonder effect op de resultaten . Tot slot , Oracle biedt twee methoden voor het schrijven van een GROUP BY-component wanneer de SELECT-instructie concateneert twee databasekolommen . OF GROUP BY manager_emp_id , job_id ; ; < br | | job_id , COUNT ( * ) FROM employeeGROUP DOOR manager_emp_id | | job_id SELECT manager_emp_id : zowel van de volgende voorbeelden zal hetzelfde resultaat te bereiken > uitzonderingen Twee criteria geven uitzonderingen op de algemene regel . De eerste is een uitzondering die u toelaat om te sluiten een SELECT-instructie nonaggregate expressie in je GROUP BY-component met behulp van een " inline view " te construeren - een subquery binnen de query - . In een FROM verklaring plaats van : SELECT ROWNUM , cust_nbr , COUNT ( order_nbr ) FROM cust_orderGROUP DOOR ROWNUM , cust_nbr ; Gebruik : SELECT ROWNUM , v. * FROM ( SELECT cust_nbr , COUNT ( order_nbr ) FROM cust_order GROUP BY cust_nbr ) v ; < br > de tweede uitzondering criterium staat dat u een lege SELECT-instructie kan hebben en alleen de nonaggregate expressie in je GROUP BY-component . Echter , als je het statement op deze manier te schrijven , zullen de resultaten van de telling weergegeven zonder vermelding van de database rij die u geselecteerd om te tellen SELECT COUNT ( order_nbr ) FROM cust_orderGROUP DOOR cust_nbr ; . Resultaten : COUNT ( ORDER_NBR ) ---------------- 8462
|