我有一个表,其中按日期列出了一堆资产,
我是:
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;
那有可能吗?
如果是,这怎么工作?
我专门标记了我遇到问题的部分,哪些部分已经完成并且可以正常工作。
答案 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;