PostgreSQL:需要执行Row操作

时间:2013-09-24 13:44:39

标签: sql postgresql rails-postgresql

我是PostgreSQL的新手。我想在我的桌子上执行行操作。 例如,考虑此表输出:

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

我想显示“记录”的名称,Android的使用率高达笔记本电脑的10%。这种情况下,使用Android设备高达笔记本电脑10%的Joy。我们做过数学计算:(270/500)*100=54%。我希望在我的表格中完成相同的操作。表具有超过1lac这样的记录。 有人可以帮我构建查询相同的。谢谢

1 个答案:

答案 0 :(得分: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'的所有行,然后对于我们尝试查找记录的所有记录,其中Record =记录来自所选行和Accesories = 'Laptop'(请注意如果Record, Accesories不是您的表的唯一键,则最终可能会出现重复行。之后,您只需要计算值并过滤掉不满足条件的行(通过将其添加到where子句中)。

<强> sql fiddle demo