【问题标题】:Help with SQL query (Calculate a ratio between two entitiess)帮助 SQL 查询(计算两个实体之间的比率)
【发布时间】:2011-02-06 16:41:31
【问题描述】:

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

主体与论坛相同,您在其中说: 用户为每个新线程获得积分。然后,计算线程数的分数比。

示例: 用户 A 有 300 分。用户 A 已启动 6 个线程。积分比例为:50:6

我的架构如下所示:

学生(学生编号、姓名、班级、专业)

课程(课程ID,课程名称,部门)

courseoffering(courseid、学期、年份、导师

教师(姓名、办公室、薪水)

gradereport(studentidcourseid、学期、年份、年级)

关系如下:

学院(姓名)=课程设置(讲师)

学生(studentid) = 成绩报告(studentid)

Courseoffing(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

我的问题是找出教员工资与他们教的学生人数之间的比率。

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

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

谢谢

梅斯蒂卡

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

员工 1: 薪水 = 10.000 |他教授的课程数量:3 |参加 3 门课程的学生人数(总计):15。

然后,员工 1 的收入为 666,7 pr。每个学生。 (我相信这是比例)

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

然后,员工 2 赚取 5000 公关。每个学生。

【问题讨论】:

  • 你的比率没有意义。第一个例子应该是 50:1,第二个例子应该是 2000:1(假设薪水是 10,000)。你能解释为什么你提供的答案是正确的吗?也许比率不是您在这里寻找的。​​span>

标签: sql mysql


【解决方案1】:

当我查看您的第一个示例时,它说 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

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

【讨论】:

  • 请参阅我对您的回答的“评论”。太长了,无法发表评论
  • dev.mysql.com/doc/refman/5.1/en/cast-functions.html 说你应该使用 convert(expr, char) 或 cast(expr as char)
  • 好吧,我对mysql有点生疏了,convert语句中的类型似乎是后者,但是cast(int as varchar)也应该可以工作
【解决方案2】:

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

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

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

我之前没有尝试过 convert 语句,但有必要(以及为什么)转换它们吗?如果我为每个具有正确条件的教员,找出参加该课程的学生人数。然后用教员的工资除以找到的学生人数?

【讨论】:

  • 您仍然没有正确解释它 - 如果它是简单的除法,那么结果应该是 10000:5=2000(而不是 1:5=0.2)。 Björn 进行了转换,因此您可以获得文本格式的表达式 x:y。如果您正确定义该比率是多少,您似乎不需要转换。尝试提供更多示例(薪水 20000,学生 200... 等),并以数字而不是比率的形式给出示例答案。另外,编辑您的问题以提供进一步的解释。
  • 好的,我会这样做,并尝试通过一些示例更好、更深入地解释:员工 1:薪水 = 10.000 |他教授的课程数量:3 |参加 3 门课程的学生人数(总计):15。然后,员工 1 的收入为 666,7 pr。每个学生。 (我相信这是比率) 员工 2:薪水 = 30.000 |他教授的课程数量:1 |参加 3 门课程的学生人数(总计): 6. 然后,员工 2 赚取 5000 pr。每个学生。
猜你喜欢
  • 1970-01-01
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 2014-11-01
  • 2021-10-02
  • 2015-01-30
相关资源
最近更新 更多