für die unten stehende TabelleWie schreibe Abfrage in ORACLE und SQL_SERVER, um Datensätze mit den meisten Status zu erhalten?
tenant_id | status_id
----------------------
3 | 6
---------------------
5 | 7
---------------------
7 | 7
--------------------
3 | 7
-------------------
3 | 7
--------------------
5 | 7
wir sehen können:
mit status_id = 6- tenant_id = 3 hat 1 Rekord tenant_id = 7 hat 1 Datensatz mit status_id = 7
- mieter_id = 3 hat 2 Datensatz mit status_id = 7
Für gegebenes STATUS_ID_PARAM möchte ich alle Mandanten erhalten, die die meisten Datensätze mit diesem STATUS_ID_PARAM
enthält. Für das obige Beispiel, für STATUS_ID_PARAM = 7
sollte die Abfrage 2 Datensätze zurück:
tenant_id | status_id
--------------------
3 | 7
--------------------
5 | 7
weil die Mieter der die meisten Platten (2 für jeden) mit status_id = 7 hat.
Ich habe versucht, so etwas, aber ich weiß nicht, wie es weitergeht oder es sein kann, ist eine andere Art und Weise:
select tenant_id, count(status_id) s
from candidate
where status_id = STATUS_ID_PARAM
group by tenant_id, status_id
Ich mag das Schlüsselwort rank(). – Turbot