Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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_Sql_Database - Fatal编程技术网

Mysql 值范围内记录的计数和百分比

Mysql 值范围内记录的计数和百分比,mysql,sql,database,Mysql,Sql,Database,我有一张有列的桌子 TicketID - ID of the ticket AssignedTo - UserID of person to whom ticket is assigned CreatedTime - Time when Ticket is received HandleTime - Time when Ticket is picked up for handling FinishTime - Time when Ticket is finished handling 我需要检

我有一张有列的桌子

TicketID - ID of the ticket
AssignedTo - UserID of person to whom ticket is assigned
CreatedTime - Time when Ticket is received
HandleTime - Time when Ticket is picked up for handling
FinishTime - Time when Ticket is finished handling
我需要检索分组到单个AssignedTo ID的以下数据:

  • 指派

  • 以下范围内的领料率(百分比和计数)


    • 根据你的例子,你已经差不多做到了。您所需要的只是单个和与总和的比率(或者计数会这样做)。差不多

      SELECT AssignedTo,
             sum(1) AllCount,
             sum(CASE
                   WHEN HandleTime - CreatedTime <= 1
                     THEN 1
                   ELSE 0
                 END) Range1PickupCount,
             sum(CASE
                   WHEN HandleTime - CreatedTime > 1
                     THEN 1
                   ELSE 0
                 END) Range2PickupCount,
             ...
             sum(CASE
                   WHEN HandleTime - CreatedTime <= 1
                     THEN 1
                   ELSE 0
                 END) / sum(1) * 100 Range1PickupPercentage,
             sum(CASE
                   WHEN HandleTime - CreatedTime > 1
                     THEN 1
                   ELSE 0
                 END) / sum(1) * 100 Range2PickupPercentage,
             ...
             FROM Tickets
             GROUP BY AssignedTo;
      
      选择AssignedTo,
      总和(1)全部计数,
      总数(例)
      当HandleTime-CreatedTime 1
      那么1
      其他0
      结束)范围2PickupCount,
      ...
      总数(例)
      当HandleTime-CreatedTime 1
      那么1
      其他0
      结束)/总和(1)*100范围2百分位,
      ...
      从票上
      被指派的小组;
      
      应该是一个有效的示范,你可以继续下去


      (免责声明:根本没有测试,因为没有提供DDL和DML。)

      如果您提供了所需的结果,这将有所帮助。“收货范围百分比”和“收货范围计数和百分比”是什么意思?请参阅@GordonLinoff我添加了更多详细信息。看看您是否能理解它们@草莓我已经添加了更多的细节。看看你是否能理解它们!别担心——如果它们不符合要求,那么我甚至不会费心看它们
      TicketID | AssignedTo | CreatedTime | HandleTime | FinishTime
         1          001          2              3           3
         2          001          4              6           8
         3          002          1              2           3
      
      TicketID | PickupTime | CompletedTime
          1          1            1
          2          2            4
          3          1            2
      
      AssignedTo | Pickup_range1_count | Pickup_range2_count | Pickup_range1_percentage | 
      001           1                       1                     0.5 
      002           1                       0                     1        
      Pickup_range2_percentage | Complete_range1_count | Complete_range2_count |
               0.5                       1                  1
               0                         0                  1
      Complete_range1_percentage | Complete_range2_percentage 
                0.5                       0.5
                0                         1
      
      SELECT AssignedTo,
             sum(1) AllCount,
             sum(CASE
                   WHEN HandleTime - CreatedTime <= 1
                     THEN 1
                   ELSE 0
                 END) Range1PickupCount,
             sum(CASE
                   WHEN HandleTime - CreatedTime > 1
                     THEN 1
                   ELSE 0
                 END) Range2PickupCount,
             ...
             sum(CASE
                   WHEN HandleTime - CreatedTime <= 1
                     THEN 1
                   ELSE 0
                 END) / sum(1) * 100 Range1PickupPercentage,
             sum(CASE
                   WHEN HandleTime - CreatedTime > 1
                     THEN 1
                   ELSE 0
                 END) / sum(1) * 100 Range2PickupPercentage,
             ...
             FROM Tickets
             GROUP BY AssignedTo;