2013-09-24 44 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

“试着去理解”,当谈到一堆没有解释的词的代码时,并不是很有帮助。 :) –