Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL划分派生列_Mysql_Database_Sum_Division - Fatal编程技术网

MySQL划分派生列

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

如何在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) 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)
即可)