SQL查询帮助(计算两个实体之间的比率)

SQL查询帮助(计算两个实体之间的比率),sql,mysql,Sql,Mysql,我将计算两个实体之间的比率,但在查询时遇到一些问题 校长和论坛一样,你说: 每个新线程的用户都会得到分数。然后,计算线程数的点数比 例如: 用户A得了300分。用户A已启动6个线程。分数比为:50:6 我的模式如下所示: studentstudentid、姓名、班级、专业 coursecourseid、coursename、部门 课程提供课程ID,学期,年份,讲师 学院名称、办公室、薪水 成绩报告学生ID、课程ID、学期、年份、年级 关系如下: Faculityname=课程提供讲师 Stude

我将计算两个实体之间的比率,但在查询时遇到一些问题

校长和论坛一样,你说: 每个新线程的用户都会得到分数。然后,计算线程数的点数比

例如: 用户A得了300分。用户A已启动6个线程。分数比为:50:6

我的模式如下所示:

studentstudentid、姓名、班级、专业

coursecourseid、coursename、部门

课程提供课程ID,学期,年份,讲师

学院名称、办公室、薪水

成绩报告学生ID、课程ID、学期、年份、年级

关系如下:

Faculityname=课程提供讲师

Studentstudentid=成绩报告studentid

Courseofferingcourseid=coursecourseid

Gradereportcourseid=courseofferingcourseid

我通过此查询选择教授一名或多名学生的教员姓名:

SELECT COUNT(faculty.name) FROM faculty, courseoffering, gradereport, student WHERE faculty.name = courseoffering.instructor AND courseoffering.courseid = gradereport.courseid AND gradereport.studentid = student.studentid
我的问题是找出教员的工资与他们所教的学生人数之间的比例

比如说,一名教师的工资是10000美元,教5名学生,那么他的比例应该是1:5

我希望有人能回答我的问题,并理解我的问题所在

谢谢

梅斯蒂卡

关于我的问题和要求的进一步解释和示例:

员工1:工资=10.000 |他教授的课程:3 |的学生总共学习3门课程:15

然后,员工1每名学生获得666,7 pr。我相信这就是比例

员工2:工资=30.000 |他所教授的课程:1 |的学生总共学习3门课程:6


然后,雇员2每个学生挣5000 pr。

当我看第一个例子时,它说6个线程的300分等于50:6拉托。在后面的例子中,你的意思是5名学生10000英镑的工资等于2000:5吗?不是1:5的比例

无论如何,如果我对你的例子的理解是正确的,那么这应该是一个很好的解决方案

select f.name, f.salary, count(s.studentid) as noofstudents, convert(f.salary / count(s.studentid),varchar(50)) + ':' + convert(count(s.studentid),varchar(10)) as ratio
  from faculty f
    inner join courseoffering co on f.name = co.instructor
    inner join gradereport gr on co.courseid = gr.courseid
    inner join student s on gr.studentid = s.studentid
  where co.semester = @semester
    and co.year = @year
  group by f.name, f.salary

如果这不是你想要的,也许你可以对你的问题进行一点扩展。

你完全正确,我自己的比率示例没有意义,因此我将尝试进一步解释

我想做的是,根据每位教师所教学生的数量,找出每位教师的工资水平。我想,这是一个简单的问题,即用教员的工资除以该教员正在教授的课程的学生人数

我在运行您的查询时遇到一个错误,我的MySQL在转换部分似乎有问题,但在其他方面,您的查询似乎是正确的


我以前没有尝试过convert语句,但是是否需要转换它们,以及为什么需要转换它们?如果我为每个具备正确条件的教员查找参加课程的学生人数。然后拿教职员工的工资除以找到的学生人数?

你的比例没有意义。在第一个例子中,它应该是50:1,第二个例子应该是2000:1,假设工资是10000。你能解释一下为什么你提供的答案是正确的吗?也许这个比例不是你想要的。请看我对你答案的评论。它太长了,不能放在评论中说你应该使用convertexpr、char或castexpr,因为charok我在mysql中有点生疏,似乎convert语句中的类型是后者,但是,castint as varchar也应该起作用。您仍然没有正确解释它-如果它是简单的除法,那么结果应该是10000:5=2000,而不是1:5=0.2。比约恩投了一个石膏,这样你就可以得到一个文本格式的表达式x:y。如果你正确定义了这个比率,你似乎不需要转换。试着提供更多的例子工资20000,学生200。。。以此类推,并以数字而不是比率的形式给出示例答案。另外,编辑您的问题以提供进一步的解释。好的,我会这样做,并尝试用一些例子来更好、更深入地解释:员工1:工资=10.000 |他所教授的课程:3 |学生全部遵循3门课程:15。然后,员工1每名学生获得666,7 pr。我相信这是员工2:工资=30.000 |他所教的课程:1 |学生总共修了3门课程:6。然后,员工2每个学生挣5000英镑。