определить, какой внешний ключ используется ORACLE SQL - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть две таблицы, я хочу получить среднее значение quality_score для quality_score_A и Quality_score_B.

это то, что я пробовал, но это дает мне одно и то же значение в quality_score_a и quality_score_b

SELECT AVG (quality_score),AVG (quality_score)
FROM REVIEW
JOIN Score_table on score.quality_score_A
JOIN Score_table on score.quality_score_B
WHERE PRODUCT_ID  = 2
GROUP BY PRODUCT_ID;

см. Схему таблицы вложений и желаемый результат

table layout and outcome

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Я думаю, что самый простой способ - отменить результаты:

select r.product_id,
       avg(case when which = 'a' then s.quality_score end) as a_avg,
       avg(case when which = 'b' then s.quality_score end) as b_avg
from ((select r.product_id, quality_score_a as score_id, 'a' as which
       from reviews r
      ) union all
      (select r.product_id, quality_score_b as score_id, 'b' as which
       from reviews r
      )
     ) r join
     scores s
     on r.score_id = s.score_id
group by r.product_id
0 голосов
/ 22 сентября 2018

Вы должны указать условие, к которому хотите присоединиться:

SELECT   product_id, AVG(a.quality_score), AVG(b.quality_score)
FROM     review r
JOIN     score_table a ON r.quality_score_a = a.score_id
JOIN     score_table b ON r.quality_score_a = b.score_id
WHERE    product_id = 2
GROUP BY product_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...