【问题标题】:Get percentage of returned row values获取返回行值的百分比
【发布时间】:2020-10-30 20:32:37
【问题描述】:

希望获得每个“task_types”的百分比值。看了很多例子,但不能完全弄清楚。我尝试将下面的语句放入另一个 SELECT 语句中尝试划分,但它总是会出现 SQL 错误。有什么想法吗?

这是 SQL:

SELECT t.task_type, (SUM(trktm.time_end) - SUM(trktm.time_start)) as thetime
   FROM
   task as t, track_time as trktm
   WHERE
   trktm.time_start BETWEEN 1593932400 AND 1594450800
   AND
   trktm.time_end BETWEEN 1593932400 AND 1594450800
   AND
   t.user_id = 10
   GROUP BY t.task_type
   ORDER BY FIELD(t.task_type, 'Unassigned') DESC, t.task_type ASC

这是输出:

task_type   |  thetime
- - - - - - - - - - - - - -         
Unassigned  |  1041078
Bug Fixes   |  694052
Design      |  347026

但这是我想要达到的目标:

task_type   |  thetime   |   thepercent
- - - - - - - - - - - - - - - - - - - - -         
Unassigned  |  1041078   |   70.4
Bug Fixes   |  694052    |   19.6
Design      |  347026    |   10.0

【问题讨论】:

  • 请解释预期的thepercent列背后的背景。
  • 指定 MySQL 版本。这对你的任务很重要。 但这是我想要实现的目标在单独的子查询或 CTE 中计算总和并除以。
  • 请提及总数以找出百分比,例如 --- select (thetime * 100 / (total No of Employe)) as Percentage
  • 我发现很明显需要总时间的百分比

标签: mysql sql sum percentage


【解决方案1】:

直截了当的解决方案:加入总时间

SELECT taskt_type, thetime, (thetime/totaltime) * 100 as thepercent From 
  (SELECT t.task_type, (SUM(trktm.time_end) - SUM(trktm.time_start)) as thetime
     FROM
       task as t, track_time as trktm
     WHERE
       trktm.time_start BETWEEN 1593932400 AND 1594450800
     AND
       trktm.time_end BETWEEN 1593932400 AND 1594450800
     AND
      t.user_id = 10
   GROUP BY t.task_type) A
JOIN 
  (SELECT  (SUM(trktm.time_end) - SUM(trktm.time_start)) as totaltime
     FROM
       task as t, track_time as trktm
     WHERE
       trktm.time_start BETWEEN 1593932400 AND 1594450800
     AND
       trktm.time_end BETWEEN 1593932400 AND 1594450800
     AND
      t.user_id = 10
   ) B
ORDER BY FIELD(task_type, 'Unassigned') DESC, task_type ASC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多