MySql - 动态逻辑计算器
MySql - Dynamic logic calculator
请在下方找到Table“MarkCompare”
SEMESTER - PAPER - TEACHER 1 - TEACHER 2
1 - ENG - PASS - PASS
1 - MATH - PASS - FAIL
2 - ENG - PASS - FAIL
2 - MATH - FAIL - FAIL
我想计算如下逻辑
No.Of.Times 两位老师给出相同的结果/第一位老师两位老师的结果不同的事件总和
我正在写这样的查询
select count(*) from MarkCompare where teacher1=teacher2 where paper='ENG' / (select count(*) from MarkCompare where teacher1<>teacher2 where paper='ENG')
select count(*) from MarkCompare where teacher1=teacher2 where paper='MATH' / (select count(*) from MarkCompare where teacher1<>teacher2 where paper='MATH')
现在,将来论文的数量可能会增加或减少...我无法为任何数量的论文找到 运行 的动态查询。
有没有办法不用任何 procedure/function,只需要一个查询就可以做到这一点
您可以使用 GROUP BY 子句聚合 table 中列出的每个 paper
的结果。
SELECT paper,
SUM(CASE WHEN teacher1 = teacher2 THEN 1 ELSE 0 END) AS AgreeCount,
SUM(CASE WHEN teacher1 <> teacher2 THEN 1 ELSE 0 END) AS DisagreeCount
FROM MarkCompare
GROUP BY paper;
请在下方找到Table“MarkCompare”
SEMESTER - PAPER - TEACHER 1 - TEACHER 2
1 - ENG - PASS - PASS
1 - MATH - PASS - FAIL
2 - ENG - PASS - FAIL
2 - MATH - FAIL - FAIL
我想计算如下逻辑
No.Of.Times 两位老师给出相同的结果/第一位老师两位老师的结果不同的事件总和
我正在写这样的查询
select count(*) from MarkCompare where teacher1=teacher2 where paper='ENG' / (select count(*) from MarkCompare where teacher1<>teacher2 where paper='ENG')
select count(*) from MarkCompare where teacher1=teacher2 where paper='MATH' / (select count(*) from MarkCompare where teacher1<>teacher2 where paper='MATH')
现在,将来论文的数量可能会增加或减少...我无法为任何数量的论文找到 运行 的动态查询。
有没有办法不用任何 procedure/function,只需要一个查询就可以做到这一点
您可以使用 GROUP BY 子句聚合 table 中列出的每个 paper
的结果。
SELECT paper,
SUM(CASE WHEN teacher1 = teacher2 THEN 1 ELSE 0 END) AS AgreeCount,
SUM(CASE WHEN teacher1 <> teacher2 THEN 1 ELSE 0 END) AS DisagreeCount
FROM MarkCompare
GROUP BY paper;