在我的圖像分類軟件中有表result
和image
。 其中一個結果可以包含許多圖像。 每個圖像可在列image.preclassification
僅從子表中選擇只有行滿足條件的子錶行
結果,其中多個圖像是正爲正使用值「P」或負「N」被歸類爲正。
我想只選擇積極的結果。
閱讀Postgres的文檔了幾個小時後,我來到了這樣的解決方案,它讓我害怕:
WITH tmp AS (
SELECT result.result_id AS res, image.result_id , Count(image.preclassification) AS ImgAll,
SUM(
CASE image.preclassification
WHEN 'P' THEN 1
ELSE 0
END
) AS ImgPos
from result, image
WHERE result.result_id = image.result_id
GROUP BY result.result_id, image.result_id
)
SELECT result_id
FROM tmp
WHERE ImgPos > ImgAll/2
我的問題是,是否有這樣的(ihmo很常見)問題的一個簡單的解決方案/辦法?
編輯:說明
首先,我創建一個包含正面形象的數列和計數結果的所有圖像臨時表。在下一步中,我只選擇行,正面圖像的數量多於所有圖像的一半。我的第一個想法是在第一個WHERE
聲明中使用ImgPos > ImgAll/2
,而不是使用WITH
-條款。但它並沒有像ImgPos那樣工作,ImgAll被報告爲未知列。
+1太好了,謝謝!兩者都很好! (只需要在第三版中用i替代第二版中的第四版)。我想我會採取你的第一個建議,因爲它看起來更容易:-) –