我建立一個查詢有幾列的表:選擇最近的日期和不同行計算多個值的平均
- 名
- 日期
- 約10列一個整數
現在我想要返回一個表,該表返回一行名稱列的每個唯一元素。 該行有三列:名稱,日期和整數值列的平均值。 日期是此特定名稱元素的最新日期。 而平均值是此特定行的所有整數值的平均值。
SELECT name, Max(date), SUM(value1+value2+value3+value4...+value10)/10
FROM myTable
WHERE *join statements*
Group by name
這樣做的問題是,即,由於面那筆聚集的列的所有值,計算出的值不是這個單個行的平均。 將值添加到group by語句是不可能的,因爲每個名稱只能顯示一行結果。
希望問題清楚。有任何想法嗎?謝謝!
編輯: 謝謝您的回覆戈登·利諾夫!我的問題的表述並不清楚,對此表示遺憾。
其實可以存在具有相同名稱和日期的條目。因此,我需要彙總這些條目,以防它是此特定名稱元素的最新日期。
澄清,這裏可能表:
|名稱|日期|值1 |值2 |
|名稱A | 14/09/24 | 1 | 2 |
|名稱A | 14/09/24 | 2 | 1 |
|名稱A | 14/09/24 | 9 | 9 |
|名稱A | 14/09/22 | 4 | 3 |
|名稱B | 14/09/23 | 3 | 5 |
|名稱B | 14/09/22 | 2 | 4 |
|名稱B | 14/09/21 | 4 | 2 |
|名稱C | 14/09/23 | 5 | 1 |
結果是768,16:
|名稱|日期|魅力|
|名稱A | 14/09/24 | 4 |
|名稱B | 14/09/23 | 4 |
|名稱C | 14/09/23 | 3 |
有了您的提示,我想我找到了正確的查詢對於這個問題,其中2是每行的值的數目:其實你不想要一個總
SELECT name, max(date), avg(value1+value2)/2
FROM myTable t
WHERE not exists (select 1
from myTable t2
where t2.name = t.name and t2.date > t.date
)
group by name
@ user2974776。 。 。你有沒有理由不接受答案?我很好奇爲什麼。 – 2014-09-24 15:38:08
我認爲這比問題更清楚,你的答案沒有直接解決問題。儘管如此,非常感謝,當然我接受你的答案,因爲它有幫助! – user2974776 2014-09-24 15:43:32
@ user2974776。 。 。我只問,因爲你沒有接受另一個答案(一個不被接受的典型原因)。作爲作者,你完全可以控制。您可以編輯我的答案,您的問題,或添加其他答案與問題的完整解決方案。 – 2014-09-24 20:44:39