1
我有很复杂的查询,我想创建一个视图。查询如下:从复杂的选择创建视图
select s.avg as c3, fs.bayes, fs.sure, fs.visu, fs.fstd from
(
SELECT AVG(q.c3), COUNT(q.c3), q.std
FROM (
SELECT std, c3, ROW_NUMBER() OVER (PARTITION BY std ORDER BY id) AS rn
FROM ssims
WHERE obraz = 'peppers2' and noisetype ='L' and data>'2009-12-23' and maska = 9
) q
WHERE rn <= 15
GROUP BY
std
) s
,(
SELECT AVG(f.bayes) as bayes, AVG(f.sure) as sure, AVG(f.visu) as visu, COUNT(f.bayes) as fcount, f.std as fstd
FROM (
SELECT std, bayes, sure, visu, ROW_NUMBER() OVER (PARTITION BY std ORDER BY id) AS rn
FROM falki_ssim
WHERE obraz = 'peppers2' and noisetype ='L'
) f
WHERE rn <= 15
GROUP BY
std
) fs
where s.std = fs.fstd
它选择我用指定参数测试的平均结果。此查询的输出返回10行(标准值从5到50与步骤5,所以5,10,15 ...)和5列:c3,bayes,当然,可视,std
但我想以便能够更改两个子查询的obraz
和noisetype
字段。因此,在创建这样的说法后,我希望能够以这种方式选择的结果:
select * from my_view where obraz='peppers2' and noisetype = 'L'
怎么办呢?
首先,obraz和noisetype必须出现在选择的每个级别。实际上有三种选择。即使纠正后,查询不幸运行,因为我期望(它只选择obraz/noisetype的所有可用 – Gacek 2010-01-09 14:01:02
我发现一个错误的组合:row_number中的分区还需要包括obraz和noisetype。是固定在两个地方 – 2010-01-09 14:11:17
是的,现在它完美的工作,谢谢! – Gacek 2010-01-09 15:00:19