sql.获得最大值(平均(列)) [英] sql. Getting a max(avg(column))

查看:43
本文介绍了sql.获得最大值(平均(列))的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经简化了我的问题并创建了这个例子来更好地说明.

I've simplified my problem and created this example to better illustrate.

我的桌子:

CREATE TABLE `table_company` (
  `source_id` INT(10) UNSIGNED NOT NULL,
  `company_id` INT(10) UNSIGNED NOT NULL,
  `clicks` INT(10) UNSIGNED NOT NULL,
  PRIMARY KEY (`source_id`,`company_id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

我的数据:

INSERT INTO table_company VALUES
(1,100,8),(2,100,7),(3,200,9),(4,300,3),(5,100,4),(6,400,5),(7,100,10),(8,500,4),(9,500,9),(10,400,9);


SELECT source_id,company_id,AVG(clicks) AS avg_click FROM table_company
GROUP BY source_id,company_id
ORDER BY avg_click DESC;

给我:

source_id  company_id  avg_click  
---------  ----------  -----------
        7         100      10.0000
        3         200       9.0000
        9         500       9.0000
       10         400       9.0000
        1         100       8.0000
        2         100       7.0000
        6         400       5.0000
        5         100       4.0000
        8         500       4.0000
        4         300       3.0000

我想写一个查询给我:

source_id  company_id  avg_click  
---------  ----------  -----------
        7         100      10.0000
        3         200       9.0000
        9         500       9.0000
       10         400       9.0000
        4         300       3.0000

即.只保留具有 MAX(avg_click) 的 company_id

ie. Only keep the company_id that have the MAX(avg_click)

推荐答案

SELECT source_id, company_id, MAX(avg_click) as max_click FROM 
(SELECT source_id,company_id,AVG(clicks) AS avg_click FROM table_company
GROUP BY source_id,company_id
ORDER BY avg_click DESC) tmp
GROUP BY company_id

这篇关于sql.获得最大值(平均(列))的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆