Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Sql 订单重要时对成功尝试进行分组的查询_Sql_Django_Postgresql_Django Orm - Fatal编程技术网

Sql 订单重要时对成功尝试进行分组的查询

Sql 订单重要时对成功尝试进行分组的查询,sql,django,postgresql,django-orm,Sql,Django,Postgresql,Django Orm,比如说,我有一个db桌式跳高器,用于跟踪跳高者。它有三列感兴趣的内容:尝试id、运动员和结果(一个布尔值,表示跳投者是否越过了障碍) 我想写一个查询,比较所有运动员在不同尝试中的表现,生成一个包含以下信息的表:尝试次数、清除尝试次数、总尝试次数。换言之,运动员在x次尝试时越过障碍的几率是多少 编写此查询的最佳方式是什么?这比一开始看起来要复杂得多,因为你需要确定每个运动员的尝试次数,才能计算出最终的总数 我希望答案是用Django ORM编写的,但也可以接受SQL 编辑:为了清楚起见,我需要按尝

比如说,我有一个db桌式跳高器,用于跟踪跳高者。它有三列感兴趣的内容:尝试id、运动员和结果(一个布尔值,表示跳投者是否越过了障碍)

我想写一个查询,比较所有运动员在不同尝试中的表现,生成一个包含以下信息的表:尝试次数、清除尝试次数、总尝试次数。换言之,运动员在x次尝试时越过障碍的几率是多少

编写此查询的最佳方式是什么?这比一开始看起来要复杂得多,因为你需要确定每个运动员的尝试次数,才能计算出最终的总数

我希望答案是用Django ORM编写的,但也可以接受SQL


编辑:为了清楚起见,我需要按尝试而不是运动员来分组。因此,这将是所有运动员的组合x尝试。

您可以使用SQL解决它:

SELECT t.attempt_id,
       SUM(CASE t.result WHEN TRUE THEN 1 ELSE 0 END) AS cleared,
       COUNT(*) AS total
  FROM Jumper t
 GROUP BY t.attempt_id
编辑:如果尝试id只是一个序列,并且您希望使用它来计算每个跳线的尝试次数,则可以使用此查询:

SELECT t.attempt_number,
       SUM(CASE t.result WHEN TRUE THEN 1 ELSE 0 END) AS cleared,
       COUNT(*) AS total
  FROM (SELECT s.*,
               ROW_NUMBER() OVER(PARTITION BY athlete
                                 ORDER BY attempt_id) AS attempt_number
        FROM Jumper s) t
 GROUP BY t.attempt_number

这样,您可以对所有运动员的第一次尝试、第二次尝试进行分组,以此类推……

我添加了一个编辑,以防我的原始记录没有意义,但我需要按尝试而不是运动员对结果进行分组。这样,我可以找到所有运动员第一次尝试正确的百分比,例如。