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

时间:2010-04-11 11:45:48

标签: sql mysql

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

校长与论坛相同,你说: 用户获得每个新线程的积分。然后,计算线程数的点数比率。

实施例: 用户A有300分。用户A已启动6个线程。点比为:50:6

我的模式如下:

学生( studentid ,姓名,班级,专业)

当然( courseid ,coursename,department)

课程提供(课程,学期,年级,讲师

教师(姓名,办公室,工资)

年级报告( studentid courseid ,学期,年级,年级)

关系如下:

Faculity(姓名)= courseoffering(讲师)

学生(studentid)=年级报告(studentid)

Courseoffering(courseid)= course(courseid)

Gradereport(courseid)= courseoffering(courseid)

我有这个查询来选择教授一个或多个学生的教员姓名:

SELECT COUNT(faculty.name) FROM faculty, courseoffering, gradereport, student WHERE faculty.name = courseoffering.instructor AND courseoffering.courseid = gradereport.courseid AND gradereport.studentid = student.studentid

我的问题是要找到教师工资与他们教学的学生人数之比。

比如说,老师得到10.000的工资,教5个学生,那么他的比例应该是1:5。

我希望有人能解答我的问题,并了解我遇到的问题。

由于

Mestika

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

员工1:薪资= 10.000 |他教的课程数量:3 |学生人数(总计)以下3门课程:15。

然后,员工1获得666,7 pr。每个学生。 (我相信这是比率)

员工2:薪水= 30.000 |他教的课程数量:1 |学生人数(总计)以下3门课程:6。

然后,员工2获得5000 pr。每个学生。

2 个答案:

答案 0 :(得分:0)

当我看你的第一个例子时,它表示6个线程的300点可以达到50:6 rato。在你后面的例子中,你不是说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

如果这不是你想要的,也许你可以稍微扩展一下你的问题。

答案 1 :(得分:0)

你完全正确,我自己的比例例子没有意义,所以我会尝试进一步解释。

我想要做的是,根据他们教学的学生人数,找出每位教员的薪水。我想这是一个简单的问题,关于将教师工资除以成员所教授的课程的学生人数。

当我运行您的查询时出现错误,我的MySQL有转换部分的问题(似乎),但否则您的查询似乎是正确的。

之前我没有尝试过转换语句,但转换它们是否(以及为什么)?如果我为每个具有正确条件的教员,请找到参加该课程的学生人数。然后把那些教职员工的薪水除以找到的学生人数?