mysql> select * from fuwu;
+----+------------+--------------+-----------+--------+
| Id | riqi       | qxmc         | suomc     | fenshu |
+----+------------+--------------+-----------+--------+
|  1 | 2008-10-02 | 龙潭供电公司 | 龙潭窗口1 |   -6.0 |
|  2 | 2008-10-02 | 龙潭供电公司 | 龙潭窗口2 |   -2.0 |
|  3 | 2008-10-02 | 龙潭供电公司 | 龙潭窗口3 |   -1.0 |
|  4 | 2008-10-12 | 昌邑供电公司 | 昌邑窗口1 |   -4.0 |
|  5 | 2008-10-21 | 船营供电公司 | 船营窗口1 |  -12.0 |
|  6 | 2008-10-23 | 船营供电公司 | 船营窗口1 |   -5.0 |
|  7 | 2008-10-23 | 船营供电公司 | 船营窗口2 |   -7.0 |
+----+------------+--------------+-----------+--------+
7 rows in set (0.02 sec)想实现如下结果:1  龙潭供电公司     -3.0         //二级单位总分数 / 二级单位个数      -9.0 / 3 =  -3.0
2  昌邑供电公司     -4.0         //二级单位总分数 / 二级单位个数      -4.0 / 1 =  -4.0
3  船营供电公司    -12.0         //二级单位总分数 / 二级单位个数     -24.0 / 2 = -12.0按照所得分数升序排列想请教下大家,这个sql该怎么写呢?

解决方案 »

  1.   

    select qxmc,sum(fenshu)/count(distinct suomc) as avg_fenshu
    from fuwu
    group by qxmc;
      

  2.   

    --按分数排名select qxmc,sum(fenshu)/count(distinct suomc) as avg_fenshu
    from fuwu
    group by qxmc
    order by avg_fenshu desc;
      

  3.   

    select qxmc,sum(fenshu)/
    (select count(distinct suomc) from ttq4 where qxmc=a.qxmc) as dd from ttq4 a group by a.qxmc 
      

  4.   

    or
    select qxmc,suomc,sum(fenshu)/count(distinct suomc) from ttq4 group by qxmc