大家好,我想請教一個問題
目前我在使用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]
解決。