1

我是 PostgreSQL 的新手。我想对我的表执行行操作。例如考虑这个表输出:

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

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

4

1 回答 1

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

实际上这里做了什么 - 我们从Table1where获取所有行Accesories = 'Android',然后对于每条记录,我们试图找到 Record = Record from selected row and 的记录Accesories = 'Laptop'(请注意,如果Record, Accesories不是您的表的唯一键,您最终可能会得到重复的行)。之后,您只需要计算值并过滤掉不满足条件的行(通过将此添加到where子句)。

sql fiddle demo

于 2013-09-24T14:17:25.953 回答