我有以下代码,bar可能的错字应该选择3列,第1列是排名,反对和损失的百分比。
SELECT COUNT(B.F_FACTOR) AS RANK, A.F_OPPOSITION, A.F_FACTOR
FROM
(
SELECT
F_OPPOSITION,
IF(SUM(F_RESULT='L',=1,1,0) AS F_NUM,
IF(SUM(F_RESULT IN ('W','D','L'),=1,1,0) AS F_DENOM,
ROUND(SUM(F_NUM/F_DENOM),2) AS F_FACTOR
FROM $table
GROUP BY F_OPPOSITION
) A,
(
SELECT
F_OPPOSITION,
IF(SUM(F_RESULT='L',=1,=1,=0) AS F_NUM,
IF(SUM(F_RESULT IN ('W','D','L'),=1,=1,=0) AS F_DENOM,
ROUND(SUM(F_NUM/F_DENOM),2) AS F_FACTOR
FROM $table
GROUP BY F_OPPOSITION
) B
WHERE A.F_FACTOR <= B.F_FACTOR
OR (A.F_FACTOR=B.F_FACTOR AND A.F_OPPOSITION=B.F_OPPOSITION)
GROUP BY A.F_OPPOSITION, F_FACTOR
ORDER BY A.F_RANK ASC, A.F_FACTOR DESC, A.F_OPPOSITION DESC;
有可能我将这个作为一个cron作业运行,每晚更新一个表,然后从该表做一个基本的选择x,y,z,用PHP显示这个,我可能会这样做。
但是从sql的角度来学习更多方面是他们在打字和处理方面更快/更容易实现相同的输出。
谢谢。答案 0 :(得分:1)
添加了cron job来更新每晚创建的表,处理时间可以忽略不计。
答案 1 :(得分:0)
在这个示例中,操作数据库中的结果(几乎)总是比从服务器端语言PHP实现相同。所以只需运行一个crontab。