首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Inner join、count和group by以获取比率

Inner join、count和group by以获取比率
EN

Stack Overflow用户
提问于 2012-12-30 03:22:56
回答 1查看 487关注 0票数 1

我希望对于那些知道自己在用mysql做什么的人来说,这是一个简单的问题。

我现在有两个表:“任务”和“完成”。

任务:

代码语言:javascript
复制
taskID  |  task_name  |  desciption  |  deadline
1       |  task 1     |  do this     | 2012-08-11
2       |  task 2     |  do that     | 2012-10-11
3       |  task 3     |  do the other| 2012-12-31

完成:

代码语言:javascript
复制
taskID  |  userID  |  status
1       |  24      |  complete
1       |  72      |  complete
1       |  15      |  late
2       |  41      |  complete
2       |  86      |  incomplete
3       |  4       |  incomplete
3       |  19      |  incomplete

我正在尝试检索在一个查询中(如下图所示)完成每个已超过截止日期的任务的用户比率(及时或延迟):

代码语言:javascript
复制
taskID  |  task_name  |  description  |  deadline  |  completion_ratio
1       |  task 1     |  do this      | 2012-08-11 |  0.66666
2       |  task 2     |  do that      | 2012-10-11 |  0.5

任务3未显示,因为截止日期未过。

下面的代码在两个表上提供了一个很好的简单连接,只选择那些已经过了截止日期的任务,但我想知道如何获得上面显示的结果。

代码语言:javascript
复制
SELECT task.taskID,task.task_name,task.description,task.deadline,completion.status
  FROM task 
  INNER JOIN completion ON task.taskID=completion.taskID 
  WHERE task.deadline>=CURDATE()

查询结果:

代码语言:javascript
复制
taskID  |  task_name  |  description  |  deadline  |  status
1       |  task 1     |  do this      | 2012-08-11 | complete
1       |  task 1     |  do this      | 2012-08-11 | complete
1       |  task 1     |  do this      | 2012-08-11 | late
2       |  task 2     |  do that      | 2012-10-11 | complete
2       |  task 2     |  do that      | 2012-10-11 | incomplete

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-30 04:08:08

根据所提供的表格数据,也可以在这里查看一下:

代码语言:javascript
复制
SELECT T.task_id,
  T.task_name,
  T.description,
  T.deadline,
  SUM( if(C.status = 'complete', 1, 0)) * 1.0 /count(C.status)
FROM tasks AS T
INNER JOIN completions AS C ON T.task_id = C.task_id 
GROUP BY T.task_id
HAVING T.deadline >= CURDATE()

SQL Fiddle demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14085124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档