MySQL划分派生列
如何在MySQL select中划分生成的列?我有两个数据库,一个有问题,一个有尝试。我想调出一个特定问题的尝试数据,包括尝试次数、错误尝试次数和正确尝试次数。然后,我想将正确的尝试数除以尝试次数(如果尝试次数大于0,则更好) 下面是一个示例查询,但它不起作用:MySQL划分派生列,mysql,database,sum,division,Mysql,Database,Sum,Division,如何在MySQL select中划分生成的列?我有两个数据库,一个有问题,一个有尝试。我想调出一个特定问题的尝试数据,包括尝试次数、错误尝试次数和正确尝试次数。然后,我想将正确的尝试数除以尝试次数(如果尝试次数大于0,则更好) 下面是一个示例查询,但它不起作用: SELECT SUM(CASE WHEN qa.id > 0 THEN 1 ELSE 0 END) attempts, SUM(CASE WHEN qa.correct = 1 THEN 1 ELSE 0 END) co
SELECT SUM(CASE WHEN qa.id > 0 THEN 1 ELSE 0 END) attempts,
SUM(CASE WHEN qa.correct = 1 THEN 1 ELSE 0 END) correct_attempts,
SUM(CASE WHEN qa.correct = 0 THEN 1 ELSE 0 END) incorrect_attempts,
(100 * correct_attempts / attempts) percentage
FROM test_questions tq
LEFT JOIN question_attempts qa ON qa.question_id = tq.id
GROUP BY id
另外,如果我可以让它工作,我应该使用什么函数将百分比返回到两个小数点
以下是一些示例数据:
{
"table": "question_attempts",
"rows":
[
{
"id": 1,
"question_id": 1,
"user_id": 8,
"correct": 1,
"created_at": "2017-01-13 12:17:42"
},
{
"id": 2,
"question_id": 1,
"user_id": 8,
"correct": 0,
"created_at": "2017-01-13 12:17:32"
}
],
"table": "test_questions",
"rows":
[
{
"id": 1,
"question": "..."
}
]
}
我想要的结果应该如下所示:
{
"rows":
[
{
"attempts": 2,
"correct_attempts": 1,
"incorrect_attempts": 1,
"percentage": 50.00,
}
]
}
因此,如果您在这个查询的顶部添加一个select,然后找到它应该起作用的百分比,那么对于这一轮,您可以使用SQL的内置函数如果您向我提供示例数据,我可以尝试您不能引用select子句后面的select子句中“声明”的别名(或者除了HAVING子句或外部封闭查询之外的任何其他地方,MSSQL甚至不允许您在HAVING子句中引用它们)。您可以按照@YashveerSingh的建议执行,或者复制sum表达式并将其除以另一个(即
sum(x)/sum(y)
即可)