MySQL VIEW,列为其他3个VIEW列的组合排名

kxe2p93d  于 2022-12-17  发布在  Mysql
关注(0)|答案(1)|浏览(137)

请原谅我,我是SQL. stupid。我终于学会了在可能的情况下使用视图而不是cron。现在,我在视图问题中有了一个视图。
我的朋友帮我走到这一步:

CREATE VIEW tbl.sums as SELECT 

table2.id, 

SUM( table1.column1 * 2 ) as column1Sum,

SUM( table1.column2 * 2 ) as column2Sum,

SUM( table1.column3 * 2 ) as column3Sum

FROM table1, table2
WHERE table1.table2_id = table2.id GROUP BY table2.id

我想在视图中加入第5列,它与其他3列具有相同的权重。
因此,等式将类似于(1/3)* 百分位数(column 1 Sum)+(1/3)* 百分位数(column 2Sum)+(1/3)* 百分位数(column 3Sum),其中“百分位数()”是该列相对于该列其余部分的百分位数排名。
请原谅不够清楚。这真的不是我的专长。将编辑尽可能多的需要。
先谢谢你!

澄清度百分比

在我的例子中,百分位数是给定列从最高到最低的百分比等级,它针对重复进行了调整。因此,对于具有100个值的列,具有最大值的列将是100%,具有最小值的列将是0%(或者是1%?)。如果有100个但有50个重复值,则最后两个将共享2%。

km0tfn4u

km0tfn4u1#

CREATE VIEW tbl.sums as SELECT 
    tmp.*,
    (1/3)*(tmp.column1Sum+tmp.column2Sum+tmp.column3Sum)
FROM (
    SELECT 
        table2.id, 
        SUM( table1.column1 * 2 ) as column1Sum,
        SUM( table1.column2 * 2 ) as column2Sum,
        SUM( table1.column3 * 2 ) as column3Sum
    FROM table1, table2
    WHERE table1.table2_id = table2.id GROUP BY table2.id
) AS tmp

这个等式对我来说没有多大意义,我想一定是出了什么问题,或者我没有真正得到百分位数应该是多少......所以我只输入了任意值,只要它取决于子查询的字段。
如果您没有使用子查询,而是直接使用column1Sum,您将得到一个关于未知列的错误。
否则,您可以重写用于计算总和的公式,而不是使用它的名称。但我猜这对您的用例并不实用。

相关问题