テーブルwifi_user_analytic_dyに挿入する必要があるSELECTクエリがあります。クエリに基づいてサブクエリを使用した更新
SELECT
date(acctstarttime)
, round(avg(acctsessiontime),2)average_connected_ap
, calledstationid
FROM (SELECT acctstarttime, acctsessiontime, calledstationid
FROM wifi_radacct
WHERE acctstoptime <> ''
and date(acctstarttime)= date_trunc('day', now()) -'1 day'::interval
)a
group by calledstationid, date(acctstarttime)
サンプル結果:
| date | average_connected_ap | calledstationid |
| 2017-12-06 | 1000 | publica |
| 2017-12-06 | 800 | tumis |
| 2017-12-06 | 500 | penyet |
上記のクエリは、日付とAPの平均接続ベースを検索し、テーブルwifi_user_analytic_dyに更新しようとしています。以下は、テーブルwifi_user_analytic_dy内の予想される結果です。
| date | ap | average_connected_duration_ap |
| 2017-12-06 | publica | 1000 |
| 2017-12-06 | tumis | 800 |
| 2017-12-06 | penyet | 500 |
私は上記のSELECTクエリからコピーaverage_connected_apデータをしようと列average_connected_duration_apでテーブルwifi_user_analytic_dyを更新しています。以下のUPDATEクエリは正しい結果を生成しません。同じ値をすべてのapにコピーしています。
この更新クエリを修正する方法を教えてください。
UPDATE wifi_user_analytic_dy B
SET avg_connected_duration_ap = (select round(avg(wifi_radacct.acctsessiontime),2)
from wifi_radacct
where date(acctstarttime)= date_trunc('day', now()) -'1 day'::interval
)
FROM wifi_radacct A
WHERE A.calledstationid=B.ap and A.date(acctstarttime)= B.date
;
誰かが私に助言してくれることを願っています。
データとテーブル構造を指定すると、SQLの質問に答えるのが簡単です。たぶんあなたは[sqlfiddle](http://www.sqlfiddle.com/)を提供することができますか? –
データサンプルと期待される結果をご記入ください –