Mysql将正在创建的一列的总和除以正在创建的另一列的

时间:2018-09-20 19:28:03

标签: mysql count average

我有一个表,其中按日期列出了一堆资产,

我是:

1.-按日期选择和分组<-完成

2.-计算给定日期别名中的所有资产:count_by_date <-完成

3.-获取将要接收资产的总人数,并将该数字除以每个日期的资产计数,别名:end_result <-这是我遇到的问题。

SELECT 
dates, 
COUNT(*) AS `count_by_date`,
SUM(`amount_of_people`) / `count_by_date` AS `end_result`
FROM example_table
GROUP BY dates;

那有可能吗?

如果是,这怎么工作?

我专门标记了我遇到问题的部分,哪些部分已经完成并且可以正常工作。

2 个答案:

答案 0 :(得分:1)

不能在选择中使用别名列名称,必须重复代码

    SELECT 
    dates, COUNT(*) AS count_by_date
    , SUM(b) / COUNT(*) AS average 
    FROM example_table
    GROUP BY dates;

数据库引擎会在对select子句进行赋值之后解析别名,因此在求值期间,select子句不知道列名的别名

答案 1 :(得分:0)

另一种方法是,如果要使用列的别名来执行计算,请使用别名表。

例如:

SELECT t.dates, t.total/t.count_by_date  AS avg
FROM
(SELECT dates,COUNT(*) AS count_by_date,SUM(b) AS total
FROM
example_table b
GROUP BY dates )
AS t;