繁体   English   中英

MySQL基于多个因素寻找平均值

[英]MySQL find averages based on multiple factors

我有桌子做这样的事情

+--------------------------+--------+------+---------+
|                          | City   | Year | Density |
+--------------------------+--------+------+---------+
| Project 1                | City A | 2008 | 500     |
+--------------------------+--------+------+---------+
| Project 2                | City B | 2012 | 800     |
+--------------------------+--------+------+---------+
| Project 3                | City C | 2012 | 400     |
+--------------------------+--------+------+---------+
| Project 4                | City A | 2008 | 600     |
+--------------------------+--------+------+---------+
| Project 5                | City C | 2013 | 700     |
+--------------------------+--------+------+---------+
| etc (c. 30,000 projects spread across 30 cities)   |
+--------------------------+--------+------+---------+

(大约30,000个项目分布在30个城市。)

我可以这样写查询:

SELECT Year, AVG(`Density`) as Density FROM table  where City=’A’ GROUP BY Year

对于一个城市来说效果很好。 关于我如何编写一个查询来按年计算每个城市的平均值的问题,有人能为我指明正确的方向吗? 我期望结果表看起来像这样:

+------+--------+--------+--------+-------------+
|      | City A | City B | City C | City D, etc |
+------+--------+--------+--------+-------------+
| 2005 |        |        |        |             |
+------+--------+--------+--------+-------------+
| 2006 |        |        |        |             |
+------+--------+--------+--------+-------------+
| 2008 |        |        |        |             |
+------+--------+--------+--------+-------------+
| 2009 |        |        |        |             |
+------+--------+--------+--------+-------------+
| 2010 |        |        |        |             |
+------+--------+--------+--------+-------------+
| etc  |        |        |        |             |
+------+--------+--------+--------+-------------+

我试图在where子句(where in (select distinct City))中的where中)中使用子查询,但是它的行为不符合我的预期。

还是我只需要为30个城市中的每个城市单独划一条线?

我不是MySQL的专家,在概念上看不到我需要做什么。 如果有人可以给我任何指示,我将不胜感激。 谢谢。

您可以按多列分组:

SELECT city, year, AVG(density) AS density
FROM table
GROUP BY city, year

这将为每个城市/年份组合返回单独的一行。 要将城市作为列,您需要对其进行透视。 MySQL数据透视表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM