Przepraszam z góry, ponieważ jestem trochę nowicjuszem w SQL, więc mój kod może wydawać się, że nie ma sensu, ale postaram się uczynić jak najwięcej tego, jak tylko mogę i mam nadzieję bardziej doświadczeni ludzie mogą mi pomóc. Nie jestem pewien, czy to pomoże, ale używam bazy danych Oracle.Wyświetlanie wartości z wyrażenia klauzula HAVING
Mam dwie tabele:
Elementy - ta zawiera elementID jak również pole ElementName
Wymiany - ta zawiera exchangeID i elementID pole
Utworzono następujące zapytanie w celu pobrania tylko eleme NTS, które występują u ponad 50% wymian:
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);
Ta część wydaje się działać prawidłowo, ale również trzeba pobierać% wystąpień dla każdej pozycji wymiany. Tak więc, na przykład, jeśli element A występuje w 76% wymian, a element B występuje w 59% wymian, chciałbym zwrócić wiersz z A i 76% i inny wiersz z B i 59%. W moim umyśle, oznaczałoby to jakoś coraz wynik wyrażenia po lewej stronie klauzuli HAVING:
(count(*)/(SELECT count(*) FROM
(SELECT exchangeID, count(*) FROM Exchanges GROUP BY exchangeID)))
Wyrażenie to daje mi procent szukam, ale nie były w stanie rysunek sposób użycia tego wyrażenia w taki sposób, że mogę go odzyskać za pomocą SELECT, dzięki czemu mogę sparować go z odpowiadającym mu elementName w sposób, jaki właśnie wyjaśniłem.
Czy istnieje sposób propagacji tej wartości do mojego SELECT, aby można było pobrać wartość, której szukam?