2010-04-11 61 views
0

我將計算兩個實體之間的比率,但在查詢時遇到一些問題。SQL查詢幫助(計算兩個實體之間的比率)

校長與論壇說的一樣,你說: 用戶爲每個新的線程獲得積分。然後,計算線程數的點數比率。

例如: 用戶A有300點。用戶A已經啓動了6個線程。點比例爲:50:6

我的模式看起來如下:

學生(studentid,姓名,班級,專業)

課程(courseid,coursename,部門)

courseoffering(courseid,學期一年,教練

教師(,辦公室,薪水)

gradereport(studentidcourseid,學期一年,等級)

的關係是以下幾點:

Faculity(名稱)= courseoffering (指導員)

學生(studentid)= gradereport(studentid)

Courseoffering(courseid)=套餐(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。

我希望有人對我的問題有一個答案,並瞭解我遇到了什麼問題。

感謝

Mestika

一些進一步的解釋和我的問題和要求的例子:

員工1:工資= 10.000 |他教的課程數:3 |學生總數(totaly)以下三門課程:15.

然後,員工1獲得666,7公斤。每個學生。(我相信這是比率)

員工2:薪水= 30.000 |他教的課程數:1 | #學生(totaly)以下thoes 3個課程:6.

然後,員工2賺5000瑞士法郎。每個學生。

+1

你的比例沒有意義。在第一個例子中,它應該是50:1,第二個例子應該是2000:1(假設工資是10,000)。你能解釋爲什麼你提供的答案是正確的嗎?也許比例不是你在這裏尋找的。 – RedFilter 2010-04-11 12:13:50

回答

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 

也許你可以在你的問題展開了一下,如果這不是你在找什麼。

+0

請參閱我的「評論」到您的答案。這是太長,不能放在評論 – Mestika 2010-04-11 14:51:35

+0

http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html說你應該使用convert(expr,char)或cast(expr as char) – Unreason 2010-04-11 14:59:03

+0

好吧我在mysql中有點生疏,看起來類型是convert語句中的後者,然而cast(int as varchar)也應該可以工作 – 2010-04-11 23:36:25

0

你是完全正確的,我自己的比例例子沒有意義,所以我會嘗試進一步解釋。

我想要做的是找出每位教師的薪水取決於他們所教的學生人數。我想這是一個簡單的問題,關於將教師薪水除以學員的教學數量。

當我運行您的查詢時出現錯誤,我的MySQL有一個轉換部分(看起來)的問題,但否則您查詢是正確的,似乎。

我還沒有嘗試過的轉換語句,但是它(和爲什麼)有必要將它們轉換?如果我對每個具有正確條件的教員,找出參加課程的學生人數。然後拿這位教員的薪水,並將其除以找到的學生人數?

+0

你還沒有正確解釋它 - 如果是簡單的鴻溝,那麼結果應該是10000:5 = 2000(而不是1:5 = 0.2)。 Björn放置了一個演員陣容,這樣你就可以得到一個文本格式的表達式x:y。如果你正確定義了這個比例,看起來你不需要轉換。試着提供更多的例子(薪水20000,學生200等),並給出一個樣本答案作爲數字而不是比例。另外,編輯你的問題提供進一步的解釋。 – Unreason 2010-04-11 15:04:51

+0

好吧,我會這樣做,並嘗試用一些例子來更好地解釋: 員工1:薪水= 10.000 |他教的課程數:3 |學生總數(totaly)以下三門課程:15. 然後,員工1獲得666.7公斤。每個學生。 (我相信這是比例) 員工2:薪水= 30.000 |他教的課程數:1 | #學生(totaly)以下thoes 3個課程:6. 然後,員工2贏得5000公關。每個學生。 – Mestika 2010-04-11 16:29:08