這是我的表格結構和數據。如何在mysql中使用聚合函數將值賦給變量?
create table StudentInformation
(
sId INT(5),
name VARCHAR(50),
sClass VARCHAR(10),
maths INT(5),
physics INT(5),
chemistry INT(5)
);
INSERT INTO StudentInformation
values
(1, 'Jai', '11th', 60, 75, 65),
(2, 'Leela', '12th', 91, 87, 94),
(3, 'Suresh', '11th', 75, 68, 70),
(4, 'Ramesh', '11th', 50, 67, 55),
(5, 'Janki', '12th', 78, 89, 78),
(6, 'Lalu', '12th', 30, 38, 45),
(7, 'Amit', '11th', 91, 95, 93),
(8, 'Komal', '11th', 66, 78, 74),
(9, 'Sanjay', '12th', 25, 40, 35);
現在我想計算每班的平均分數。
我曾嘗試此查詢:
SELECT
sClass class,
@var := sum(maths+physics+chemistry)/(count(sid)*3) as avgMarksPerSubject,
@var as variableValue,
count(sid) as numberOfStudents
FROM StudentInformation
#where @var > 65
group by sClass;
使用變量是強制性這裏這只是我的實際任務的例子。
現在我想擁有超過65分的記錄。
在WHERE
從句中使用變量可能嗎?
我沒有得到@var
的實際數據,我怎樣才能在WHERE
條款中使用它?
你可以試試sql查詢here。
有什麼建議嗎?
由於
有一個名爲@var將與所有行共享一個變量,所以第一行的值將被隨後的行值覆蓋。進一步的WHERE子句將在聚合函數執行之前發生(將其改爲HAVING avgMarksPerSubject> 65)。 – Kickstart
這意味着我不能在這種情況下使用變量,對吧? – unknown
不,你不是。它們可以用於將一行中的值傳遞給下一行,並將其分配給SELECT中的某個字段,但每次將其分配給該變量本身時都會被寫入。使用變量來獲得你想要的結果是完全沒有必要的。你真正的需求是什麼使變量具有強制性? – Kickstart