我有一个调查数据库设计。
我有一个带有user_id PK和名称的表USERS。
问题与question_id和question_text。
POSSIBLE_ANSWER,带有answer_id PK,值,文字。
另外,我有USER_ANSWERS,其中包含来自用户的user_id,Question_id,answer_id。
另外还有其他3个与我的问题无关的表格。
我需要的是为名字如'm%'的所有用户选择avg(值)。
希望这是明确的谢谢。
答案 0 :(得分:2)
尝试以下方法:
select avg(PA.value)
from POSSIBLE_ANSWER PA
inner join USER_ANSWERS UA on PA.answer_id = UA.answer_id
inner join USERS U on U.user_id = UA.user_id
where U.name like 'm%'
答案 1 :(得分:2)
SELECT u.user_id, u.name, AVG(pa.value)
FROM USER_ANSWERS ua
INNER JOIN POSSIBLE_ANSWER pa ON pa.answer_id = ua.answer_id
INNER JOIN USERS u ON ua.user_id = u.user_id
WHERE u.name LIKE 'm%'
GROUP BY u.user_id
如果您想要名称以“m”开头的所有用户的平均值,请删除GROUP BY
。此查询提供平均PER用户,其名称以m。
答案 2 :(得分:2)
你可以这样做:
SELECT u.name, AVG(pa.value) AS avgvalue
FROM USER_ANSWERS ua
INNER JOIN USERS u ON u.user_id = ua.user_id
INNER JOIN POSSIBLE_ANSWER pa ON pa.answer_id = ua.answer_id
WHERE u.name LIKE 'm%'
GROUP BY u.name
虽然我仍然有兴趣阅读你到目前为止所尝试的内容。您可以将u.user_id
添加到您的选择列表并按其添加(例如PatrikAkerstrand) - 如果您的名称不是唯一的,则必须执行此操作