我有一个以EID作为主键(它是一个varchar并包含一些细节)和uploadtime作为日期时间列的表。我想要的结果,从这个表:在select子句中分配和使用mysql用户变量
substr(eid,5,5) as machine | count(eid) in group(grouped by machine) as packets | AvgDelay (as shown in SQL code) | packets * AvgDelay as Penalty
但最后一栏总是空。我使用的SQL是:
SELECT substr(eid, 5, 5) AS machine,
@packetcount: = count(*) AS packets,
@avg_delay: = round(avg(DATEDIFF(IF (STR_TO_DATE(uploadtime, '%Y-%m-%d') IS NULL, CURDATE(), STR_TO_DATE(uploadtime, '%Y-%m-%d')), STR_TO_DATE(SUBSTR(eid, 15, 8), '%Y%m%d')))) AS AvgDelay,
@packetcount * @avg_delay AS Penalty
FROM eidreport
WHERE uploadtime IS NOT NULL
OR DATEDIFF(IF (STR_TO_DATE(uploadtime, '%Y-%m-%d') IS NULL, CURDATE(), STR_TO_DATE(uploadtime, '%Y-%m-%d')), STR_TO_DATE(SUBSTR(eid, 15, 8), '%Y%m%d')) >= 100
GROUP BY machine
Here is the link for SQL Fiddle
我在哪里错了?请帮忙。提前致谢。