Mysql 从现有列创建新列
我想从这个示例表中创建一个新列,但还有一个条件我还没有弄清楚,我想创建一个特定于每个城市的平均持有量列Mysql 从现有列创建新列,mysql,sql,subquery,average,window-functions,Mysql,Sql,Subquery,Average,Window Functions,我想从这个示例表中创建一个新列,但还有一个条件我还没有弄清楚,我想创建一个特定于每个城市的平均持有量列 Name | City | Holdings Tom Jones | London | 42 Rick James| Paris | 83 Mike Tim | NY | 83 Milo James| London | 83 因此,在这个示例表中,伦敦有多个实例,因此它的唯一值为“62.5”,表示特定于cit
Name | City | Holdings
Tom Jones | London | 42
Rick James| Paris | 83
Mike Tim | NY | 83
Milo James| London | 83
因此,在这个示例表中,伦敦有多个实例,因此它的唯一值为“62.5”,表示特定于city列中的值的平均持有量
Name | City | Holdings | City Avg. Holdings
Tom Jones | London | 42 | 62.5
Rick James| Paris | 36 | 36
Mike Tim | NY | 70 | 70
Milo James| London | 83 | 62.5
在MySQL 8.0中,这是直接使用窗口函数实现的:
select t.*, avg(holdings) over(partition by city) avg_city_holdings
from mytable t
在早期版本中,您可以加入:
select t.*, a.avg_city_holdings
from mytable t
left join (select city, avg(holdings) avg_city_holdings from mytable group by city) a
on a.city = t.city
这是否适用于多种条件,例如,我可以指定匹配超过某个数字的姓氏或财产的值?@jehaimansmar:可能是,但这取决于具体要求(以及您的MySQL版本)。你可能想为此付出代价。