2013-11-21 38 views
3

我有以下形式的表:(答案必須對PostgreSQL 9.2工作SQL篩選

Statename的,ContryName,流行等// BTW狀態也可以是省,我使用它們interchangeabley

我想刪除具有太多的狀態

這不會過濾任何國家,但因爲我對國家分組(states.admin)我得到一個錯誤,因爲states.name是不在組中子句。

我想要一個過濾的表,那只是remov將所有行都列入超過100個州的國家/地區。

我有道理嗎?我假設我需要某種WHERE子查詢。

SELECT 
    states.name, 
    states.admin 
FROM 
    vector.states 
GROUP BY 
    states.admin 
HAVING COUNT(*) < 100 
ORDER BY 
    states.admin ASC; 
+0

你會如何找到100多個國家的國家,如果'狀態也可province'?如果你認真對待自己,這個問題是無法回答的。將不同類型的數據寫入同一列是非常糟糕的設計,但無法區分它們。另外,像這樣的問題需要提供表定義,最好是你用'\ d vector.states'從psql得到的。然後我們就知道哪一列是主鍵等等。 –

+0

說得不好(程序員試圖說英語)。我有一張列出省份和州的表格。我給桌子打了電話。但數據是全球範圍的。但它是相同的地理概念(這就是SHAPE文件的結構,它具有第二級管理界限(從國家級別下降) –

+0

仍然沒有表格定義.. –

回答

6
SELECT s.name,s.admin 
FROM states s 
INNER JOIN (
SELECT ss.admin 
FROM states ss 
GROUP BY ss.admin 
HAVING COUNT(*) < 100 
) a ON a.admin = s.admin 
ORDER BY s.admin ASC; 

sqlfiddle demo

+0

適用於我。謝謝。 –

+0

那麼代碼的作品,它是輝煌的,但它沒有過濾我想要的。所以如果你想,這裏是我修改的問題:http://stackoverflow.com/questions/20151418/sql-query-to-filter-通過計數和屬性 –