Php
計算 SELECT 語句中兩個列別名之間的差異?
我不確定如何執行查詢的最後一部分,即直接使用別名進行計算:(SUM(task_avg - minutes) AS 差異。我認為我不能像我想的那樣簡單,但找不到方法來做到這一點。
$result = mysql_query("SELECT U.user_name, SUM(TA.task_average*M.minutes) AS task_avg, SUM(M.minutes) AS minutes, SUM(task_avg-minutes) AS difference FROM summary S JOIN users U ON U.user_id = S.user_id JOIN tasks TA ON TA.task_id = S.task_id JOIN minutes M ON M.minutes_id = S.minutes_id GROUP BY U.user_name LIMIT 0 , 30");
好的。所以我要在這裡有點冒險。我可能誤解了 OP 中的數據模型,但據我了解:
1)
tasks
持有獨特任務列表
TA.task_average
= 完成一項任務所需的平均時間(分鐘)3)
users
持有唯一使用者列表4)
summary
表示使用者對任務的嘗試以及每次嘗試完成所需的時間(通過參考minutes
表格)這裡的粗略假設是我想出的:
首先獲取所有使用者的列表,他們在每次嘗試中完成每個任務所用的時間以及每個使用者的嘗試與任務平均值之間的差異:
select U.user_name, TA.task_id, TA.task_average, M.minutes, M.minutes-TA.task_average as diff FROM summary S JOIN users U ON U.user_id = S.user_id JOIN tasks TA ON TA.task_id = S.task_id JOIN minutes M ON M.minutes_id = S.minutes_id;
然後將其匯總以獲得與每個使用者的任務平均值的平均差異(我認為這是 OP 所要求的):
select U.user_name, avg(M.minutes-TA.task_average) as avgDiff FROM summary S JOIN users U ON U.user_id = S.user_id JOIN tasks TA ON TA.task_id = S.task_id JOIN minutes M ON M.minutes_id = S.minutes_id group by U.user_name limit 0,30;
如果我有錯誤的一端,請忽略這一點。以為我會發布它以防萬一它有用。