大家好,我想請教一個問題
目前我在使用SQLITE3
有需求是想在資料表內,每隔幾個row就算一次平均
比如說:
Uid | data |
---|---|
0 | 10 |
1 | 20 |
2 | 50 |
3 | 60 |
想得出每2列一次平均 | |
avg | |
- | |
15 | |
55 | |
要得到這樣的資料, | |
想請問sqlite3 cmd該怎麼下,謝謝 |
我有找過關於over的資料
但over照著官網的範例下也是會出現syntax error
目前限制是僅能使用sqlite3.24版本
謝謝好心人士幫忙解答
-- 我是使用 Postgresql 為範例.
-- sqlite 也有 Aggregate Window Functions ; 你先試試看
-- round() 可以視需要使用
create table ithelp190326a (
uid smallint primary key
, data smallint not null
);
insert into ithelp190326a values
(0, 10), (1, 20), (2, 50), (3, 60);
select round(inavg) as "avg"
from (select uid
, avg (data) over (order by uid range between 1 PRECEDING and CURRENT ROW) as "inavg"
from ithelp190326a) a
where (uid % 2) = 1;
+-----+
| avg |
+-----+
| 15 |
| 55 |
+-----+
(2 rows)
最近在學pandas,給點其他解法:
import pandas as pd
import numpy as np
import sqlite3
conn = sqlite3.connect("Db.db")
df = pd.read_sql_query("select * from Table order by uid;", conn)
df.groupby(np.arange(len(df))//2).mean()[1]
解決。