Я продолжаю сталкиваться с одной и той же проблемой снова и снова, надеясь, что кто-то может помочь ...
У меня есть большая таблица со столбцом категории, содержащая 28 записей для породы осел, тогда я считая два указанных c значения, сгруппированных по каждой из этих категорий в подзапросах, подобных этому:
WITH totaldonkeys AS (
SELECT donkeybreed,
COUNT(*) AS total
FROM donkeytable1
GROUP BY donkeybreed
)
,
sickdonkeys AS (
SELECT donkeybreed,
COUNT(*) AS totalsick
FROM donkeytable1
JOIN donkeyhealth on donkeytable1.donkeyid = donkeyhealth.donkeyid
WHERE donkeyhealth.sick IS TRUE
GROUP BY donkeybreed
)
,
Моя цель - получить таблицу, в которой в основном указывается процент больных ослов для каждой породы, но я всегда в конечном итоге, как ад, я борюсь с проблемой невозможности группировки без использования агрегатной функции, которую я не могу сделать здесь:
SELECT (CAST(sickdonkeys.totalsick AS float) / totaldonkeys.total) * 100 AS percentsick,
totaldonkeys.donkeybreed
FROM totaldonkeys, sickdonkeys
GROUP BY totaldonkeys.donkeybreed
Когда я запускаю это, я получаю 28 результатов для каждой породы ослов. один правильный, я верю, но, очевидно, сотни бесполезных данных все по-новому, потому что вы не можете сделать этот последний запрос без агрегатной функции, я думаю, что пропустить что-то значительное.