2013-09-24 105 views
1

我是PostgreSQL的新手。我想對我的桌子執行一個行操作。 例如考慮這個表輸出:PostgreSQL:需要執行行操作

Record | Accesories | Used 
Joy  | Laptop  |  500 
Joy  | Android |  270 
Stuart | Laptop  |  300 
Stuart | Android |  25 

我想顯示「記錄」了的Android使用的是高達使用Android設備高達10%,這是誰的情況下,其喜悅Laptop.IN的10%的名義筆記本電腦。我們做的數學計算:(270/500)*100=54%。我想要在我的表格中完成同樣的操作。表有超過1lac這樣的記錄。 有人可以幫我爲相同的框架查詢。由於

+0

瞭解加入 - http://www.w3schools.com/sql/sql_join.asp。完成之後,請閱讀索引以及它如何幫助您加快聯接速度。之後,你會很容易地寫出這個查詢 –

+0

感謝您的迴應。但即使通過學習Joins我也沒有太多的想法。我也嘗試過自我加入。我的數據庫中只有一個表,我需要從中獲取結果。 – user2811262

回答

1
select 
    T1.Record 
from Table1 as T1 
    inner join Table1 as T2 on T2.Record = T1.Record 
where 
    T1.Accesories = 'Android' and T2.Accesories = 'Laptop' and 
    (T1.Used::float/T2.Used * 100)::int > 10 

其實怎麼在這裏做 - 我們從Table1其中Accesories = 'Android'得到所有行,然後爲每個記錄,我們試圖找到記錄,其中記錄=記錄從選擇行和Accesories = 'Laptop'(注意,如果Record, Accesories是不是唯一的關鍵你的桌子,你可能會得到重複的行)。之後,你需要的只是計算值並過濾掉不滿足條件的行(通過將其添加到where子句中)。

sql fiddle demo

+0

感謝它的工作。 – user2811262

+0

@ user2811262至少試着理解它爲什麼起作用 –

+1

「試着去理解」,當談到一堆沒有解釋的詞的代碼時,並不是很有幫助。 :) –