第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從每組中選擇一列中具有相同值且在另一列中具有最大值的組中的平均值

從每組中選擇一列中具有相同值且在另一列中具有最大值的組中的平均值

PHP
胡說叔叔 2023-04-15 14:11:23
我一直在努力尋找答案,但似乎沒有人遇到與我類似的問題,所以我決定將其發(fā)布在這里。我有一個(gè)包含 200 條記錄的表,列中有重復(fù)值fix_id,在列時(shí)間戳中,每條記錄的值范圍為 1 到 5,在最后一列中我得到了年齡值。我喜歡為列中具有相同 id 的每個(gè)組選擇fix_id同時(shí)在時(shí)間戳列中保持最大值的年齡列的平均值,并且有一個(gè)棘手的問題是年齡列有時(shí)可以具有值 0,在這種情況下,我喜歡跳過這個(gè)值。 fix_id   timestamp  age  10         2        0  10         2        2  10         4        0  10         4        1  10         4        3  5          4        2  5          4        4  5          3       10所以從這張表中,我想得到這個(gè)結(jié)果 fix_id    timestamp   age  10          4         2  5           4         3因此,如果年齡列中有 0,我不想在計(jì)算平均值時(shí)包括它。這可能嗎?
查看完整描述

2 回答

?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊

一種方法是帶過濾的聚合查詢:


select fix_id, timestamp, avg(age)

from t

where age > 0 and

      timestamp = (select max(t2.timestamp) from t t2 where t2.fix_id = t.fix_id)

group by fix_id;


查看完整回答
反對(duì) 回復(fù) 2023-04-15
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

如果您在查詢中設(shè)置條件,例如:


WHERE age > 0

0那么您將錯(cuò)過最大時(shí)間戳僅在列中包含 sage并且您不會(huì)fix_id在結(jié)果中得到它的情況。

所以使用條件聚合:


SELECT t.fix_id, t.timestamp, 

       AVG(CASE WHEN t.age > 0 THEN t.age END) average_age

FROM tablename t

WHERE t.timestamp = (SELECT MAX(timestamp) FROM tablename WHERE fix_id = t.fix_id)

GROUP BY t.fix_id, t.timestamp

請(qǐng)參閱演示。

結(jié)果:


| fix_id | timestamp | average_age |

| ------ | --------- | ----------- |

| 5      | 4         | 3           |

| 10     | 4         | 2           |


查看完整回答
反對(duì) 回復(fù) 2023-04-15
  • 2 回答
  • 0 關(guān)注
  • 148 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)