sql >> Databasteknik >  >> RDS >> Oracle

Hur man får det vanligaste värdet SQL

Det "mest förekommande värdet" i en distribution är ett distinkt begrepp inom statistik, med ett tekniskt namn. Det kallas för distributionens MODE. Och Oracle har STATS_MODE() funktion för det. https://docs.oracle.com/cd/B19306_01 /server.102/b14200/functions154.htm

Till exempel genom att använda EMP tabell i standarden SCOTT schema, select stats_mode(deptno) from scott.emp returnerar 30 - Antalet avdelningar med flest anställda. (30 är avdelningens "namn" eller nummer, det är INTE antalet anställda på den avdelningen!)

I ditt fall:

select stats_mode(h.name) from (the rest of your query)

Obs :om två eller flera hotell är kopplade till "mest frekvent", då STATS_MODE() kommer att returnera en av dem (icke-deterministisk). Om du behöver alla bundna värden behöver du en annan lösning - ett bra exempel finns i dokumentationen (länkad ovan). Detta är en dokumenterad brist i Oracles förståelse och implementering av det statistiska konceptet.



  1. Lagrad procedur - returnera identitet som utdataparameter eller skalär

  2. Hämta data för flera singel eller referens utan liknande operatör

  3. inkonsekventa datatyper:när tabell returneras från markören i en paketfunktion - ORACLE

  4. Jag vill visa i postgis filer som är mindre än 10 000 meter och deras beräknade avstånd