3

我试图弄清楚如何确定表中不同条目的值匹配的时间百分比。例如,使用以下简单表:

User     Question   Answer
-----------------------------------
Tony      1         Yes
Bill      1         No
Jeff      2         Cat
Tony      2         Dog
Bill      2         Dog
Tony      3         No

我想写一个查询,告诉我托尼和比尔在他们都回答的两个问题上同意 50% 的时间。

4

2 回答 2

3

'Tony'是 User1 参数,

'Bill'是 User2 参数:


SELECT
    COUNT(CASE WHEN a.user = 'Tony' THEN 1 ELSE NULL END) AS U1_Total_Questions,
    COUNT(CASE WHEN a.user = 'Bill' THEN 1 ELSE NULL END) AS U2_Total_Questions,
    COUNT(CASE WHEN b.user IS NOT NULL THEN 1 ELSE NULL END) AS Total_Same_Questions,
    COUNT(CASE WHEN a.answer = b.answer THEN 1 ELSE NULL END) AS Total_Matched_Answers,
    (COUNT(CASE WHEN a.answer = b.answer THEN 1 ELSE NULL END) / COUNT(CASE WHEN b.user IS NOT NULL THEN 1 ELSE NULL END)) * 100 AS Percentage_Agreement
FROM 
    answertbl a
LEFT JOIN
    answertbl b ON a.question = b.question AND a.user = 'Tony' AND b.user = 'Bill'

-

U1_Total_Questions  U2_Total_Questions  Total_Same_Questions    Total_Matched_Answers   Percentage_Agreement
------------------------------------------------------------------------------------------------------------
3                   2                   2                       1                       50.0000
于 2012-07-02T01:02:38.953 回答
1
select
  count(case when t1.Answer = t2.Answer then 1 else null end) * 1.0 / count(*)
from
  t t1
  inner join t t2 on t1.Question = t2.Question
where
  t1.[User] = 'Tony'
  and t2.[User] = 'Bill'
于 2012-07-02T00:15:33.330 回答