Вот конфигурация я начиная с:соединить 2 таблицы в Oracle SQL
DROP TABLE ruleset1;
CREATE TABLE ruleset1 (id int not null unique,score_rule1 float default 0.0,score_rule2 float default 0.0,score_rule3 float default 0.0);
DROP TABLE ruleset2;
CREATE TABLE ruleset2 (id int not null unique,score_rule1 float default 0.0,score_rule2 float default 0.0,score_rule3 float default 0.0);
insert into ruleset1 (id, score_rule1, score_rule2, score_rule3) values (0,0.8,0,0);
insert into ruleset1 (id, score_rule1, score_rule2, score_rule3) values (1,0,0.1,0);
insert into ruleset2 (id, score_rule1, score_rule2, score_rule3) values (0,0,0,0.3);
insert into ruleset2 (id, score_rule1, score_rule2, score_rule3) values (2,0,0.2,0);
, что у меня есть это теперь 2 таблицы
ruleset1:
| ID | SCORE_RULE1 | SCORE_RULE2 | SCORE_RULE3
================================================
| 0 | 0.8 | 0 | 0
| 1 | 0 | 0.1 | 0
и ruleset2:
| ID | SCORE_RULE1 | SCORE_RULE2 | SCORE_RULE3
================================================
| 0 | 0 | 0 | 0.3
| 2 | 0 | 0.2 | 0
и я хочу, чтобы они соединяли их и вычисляли среднее значение ненулевых столбцов, например :
| ID | Average
================
| 0 | 0.55
| 1 | 0.1
| 2 | 0.2
Мой текущий запрос:
select * from ruleset1 full outer join ruleset2 on ruleset1.id = ruleset2.id;
который дает уродливый результат:
| ID | SCORE_RULE1 | SCORE_RULE2 | SCORE_RULE3 | ID | SCORE_RULE1 | SCORE_RULE2 | SCORE_RULE3
============================================================================================
| 0 | .8 | 0 | 0 | 0 | 0 | 0 | .3
| - | - | - | - | 2 | 0 | .2 | 0
| 1 | 0 | .1 | 0 | - | - | - | -
Может кто-нибудь помочь с более запроса, пожалуйста?
Большое спасибо!
Ну, тогда вам не нужно использовать функцию avg() f где-нибудь? Дизайн вашего стола выглядит ошибочным. Зачем вам нужны две таблицы, которые хранят одно и то же? Добавьте столбец набора правил в одну таблицу. – OldProgrammer
Вы просто игнорируете нули при вычислении среднего? – dnoeth
Да, я просто игнорирую нули, а для функции avg() это не похоже на трюк – dark