SQL - Subquery returns more than 1 row

0

Cześć :)
Potrzebuję pomocy, Wcześniej stworzyłam 2 widoki (PlecK, PlecM), które odnoszą się do zatrudnienia na dane stanowisko z uwzględnieniem płci. Umiem policzyć procentowy udział, ale mam problem żeby połączyć dwa widoki w całość. I czy w ogóle się da?

SELECT title, tytul, ROUND((tytul *100) / (SELECT SUM(tytul) FROM PlecK), 2) AS Udzial_procentowy FROM PlecK

title tytul Udzial_procentowy
Assistant Engineer 1469 3.38
Engineer 11204 25.78
Senior Engineer 9561 22.00
Senior Staff 9142 21.03
Staff 10565 24.31
Technique Leader 1526 3.51

Próbowałam trochę połączyć te dwie tabele "łopatologicznie", ale wartości się dublują.

SELECT K.title, K.tytul, ROUND((K.tytul *100) / (SELECT SUM(K.tytul) FROM PlecK AS K), 2) AS Udzial_procentowyK,
M.title, M.tytul, ROUND((M.tytul *100) / (SELECT SUM(M.tytul) FROM PlecM AS M), 2) AS Udzial_procentowyM FROM PlecK AS K, PlecM AS M

Dziękuję za każdą poradę.

1

Masz złą strukturę bazy. Najpierw ją popraw, a pozbędziesz się wielu problemów.

1

Ciekawe nazewnictwo: czym różni się zawartość kolumny "title" od "tytul"? "Udzial_procentowyK" to jeszcze większy miszmasz, mieszasz składnię php z camel case, część nazw rozpoczyna się od dużej litery, część od małej...
Jeśli chcesz złączyć widoki, które maja taką samą strukturę, to raczej robi się to w poziomie (union), niż w pionie (select v1., v2.). Ale tak jak napisał @Marcin.Miga, masz najprawdopodobniej źle zaprojektowaną strukturę widoków. Obstawiam (sugerując się słabym nazewnictwem), że struktura tabel i samej bazy danych też może być w rozsypce.

1

użyj
UNION ALL do wyświetlenia wszystkich danych
lub
UNION wtedy duble danych usuwa

1 użytkowników online, w tym zalogowanych: 0, gości: 1