mysql平均最好的三个

时间:2017-08-16 13:06:47

标签: mysql

我已经从网站上拼凑了这个并且它可以工作但不完全,我需要它做的是获取前3个结果并取平均值但它需要所有结果,任何人都可以指出我正确的方向吗?

 SELECT i.NAME,
   e.comp,
   Round(Avg(c.phase1 + c.phase2 + c.phase3 + c.phase4 + c.phase5
             + c.phase6), 2) AS "Average Score",
   ( CASE
       WHEN compID = '7' THEN Concat(Round(Avg(
                                              ( (
       c.phase1 + c.phase2 + c.phase3 + c.phase4 + c.phase5
       + c.phase6 ) / 400 ) * 100), 2), ' %')
       WHEN compID = '5' THEN Concat(Round(Avg(
                                              ( (
       c.phase1 + c.phase2 + c.phase3 + c.phase4 + c.phase5
       + c.phase6 ) / 600 ) * 100), 2), ' %')
       WHEN compID = '3' THEN
Concat(Round(Avg(( ( c.phase1 + c.phase2 + c.phase3 + c.phase4 + c.phase5
                 + c.phase6 ) / 600 ) * 100), 2), ' %')
ELSE 'Unspecified'
END )                   AS "Average as Percent"
FROM   jos_practicedetail c,
   jos_comps e,
   jos_practice g,
   jos_members i
WHERE  e.compsid = g.competition
   AND g.practiceid = c.practicepid
   AND i.memberid = c.competitorid
   AND g.typeID = '2'
   AND Year(g.pdate) = '2017'
   AND (SELECT Count(*)
        FROM   jos_practicedetail b
        WHERE  b.competitorid = c.competitorid
               AND b.practicepid = c.practicepid
               AND ( b.phase1 + b.phase2 + b.phase3 + b.phase4 + b.phase5
                     + b.phase6 ) >= (
                   c.phase1 + c.phase2 + c.phase3 + c.phase4 + c.phase5
                   + c.phase6 )) <= 3
GROUP  BY competitorid
HAVING Count(*) > 2
ORDER  BY competitorid,
      ( Avg(c.phase1 + c.phase2 + c.phase3 + c.phase4 + c.phase5
            + c.phase6) ) DESC  

0 个答案:

没有答案