我是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这样的记录。
有人可以帮我构建查询相同的。谢谢
答案 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 强>