0

忍受我,我是 SQL.stupid。我终于了解到应该尽可能使用视图而不是 crons。现在,我在视图问题中有一个视图。

我的堆栈朋友让我走到了这一步:

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)*percentile(column1Sum) + (1/3)*percentile(column2Sum) + (1/3)*percentile(column3Sum) 其中“percentile()”是百分位数列与列的其余部分。

请原谅缺乏清晰度。这真的不是我的专长。将根据需要进行编辑。

非常感谢您提前!

百分位清晰度

就我而言,百分位数是针对重复调整的给定列的从最高到最低的百分比排名。因此,对于具有 100 个值的列,具有最大值的列将是 100%,具有最低值的列将是 0%(或者是 1%?)。如果有 100 个但 50 个重复项,则底部的两个将分享 2%。

4

1 回答 1

0
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直接使用子查询,您将收到关于未知列的错误。

否则,您可以只重写用于计算总和的公式,而不是使用其名称。但我想这对您的用例不实用。

于 2012-10-06T21:28:20.990 回答