忍受我,我是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)*百分位数(column1Sum)+(1/3)*百分位数(column2Sum)+(1/3)*百分位数(column3Sum)其中“percentile()”是列的百分位数与列的其余部分相比。
请原谅缺乏明确性。这真的不是我的专长。将根据需要进行编辑。
非常感谢你!
Percentile Clarity
在我的情况下,百分位数是针对重复调整的给定列的从最高到最低的百分比排名。因此,对于具有100个值的列,具有最大值的列将是100%,具有最低值的列将是0%(或者它将是1%?)。如果有100个但有50个重复,那么最后两个将分享2%。
答案 0 :(得分: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
,则会收到有关未知列的错误。
否则你可以重写用于计算总和而不是使用其名称的公式。但我想这对你的用例来说不实用。