簡體   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