Ich entschuldige mich im Voraus, da ich etwas neu in SQL bin, so mag mein Code mag es macht keinen Sinn, aber ich werde versuchen, so viel Sinn wie ich kann und hoffentlich Sie erfahrenere Leute können mir helfen. Ich bin mir nicht sicher, ob es helfen wird, aber ich verwende eine Oracle-Datenbank.Projizieren eines Werts von Klausel Ausdruck
Ich habe zwei Tabellen:
Elements - Dieser Bereich enthält eine elementID sowie ein element Feld
Exchanges - Dieser Bereich enthält eine ExchangeID und ein elementID Feld
Ich habe die folgende Abfrage erstellt, um nur das Eleme abzurufen nts, die in mehr als 50% der Börsen auftreten:
SELECT e.elementName
FROM Elements e
WHERE e.elemID in
(SELECT elemID FROM Exchanges
GROUP BY elemID
HAVING (count(*)/(SELECT count(*) FROM
(SELECT exchangeID, count(*) FROM Exchanges GROUP BY exchangeID))) > 0.5);
Dieser Teil scheint zu funktionieren gut, aber ich brauche auch die% der Vorkommen für jedes Element im Austausch abzurufen. Wenn zum Beispiel ein Element A in 76% der Börsen und ein Element B in 59% der Börsen auftritt, möchte ich eine Reihe mit A und 76% und eine weitere Reihe mit B und 59% zurückgeben. In meinem Kopf würde dies bedeuten, irgendwie das Ergebnis des Ausdrucks immer auf der linken Seite der HAVING-Klausel:
(count(*)/(SELECT count(*) FROM
(SELECT exchangeID, count(*) FROM Exchanges GROUP BY exchangeID)))
Dieser Ausdruck gibt mir den Prozentsatz ich suche, aber ich habe nicht in der Lage gewesen zu Figur Ich habe eine Möglichkeit, diesen Ausdruck so zu verwenden, dass ich ihn mit einem SELECT abrufen kann, so dass ich ihn mit dem entsprechenden ElementName auf eine Weise paaren kann, wie ich es gerade erklärt habe.
Gibt es eine Möglichkeit, diesen Wert zu meinem SELECT zu propagieren, damit ich den Wert abrufen kann, den ich suche?