Finology 大数据金融

通过大数据以量化金融

pip安装依赖的时候报错,pg_config executable not found, 所以需要在mac上安装postgresql。

1
brew install postgresql

如果出现Updating Homebrew并且卡住了,请参考 mac执行brew install时卡在Updating Homebrew的解决方案

安装过程中,有可能会遇到操作文件权限不够的情况,添加一下权限就可以了。

安装成功,将有如下提示:

1
2
3
4
5
6
7
8
9
10
11
To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database

To have launchd start postgresql now and restart at login:
brew services start postgresql
Or, if you don't want/need a background service you can just run:
pg_ctl -D /usr/local/var/postgres start
==> Summary
🍺 /usr/local/Cellar/postgresql/11.5_1: 3,189 files, 35.6MB
==> `brew cleanup` has not been run in 30 days, running now...
Pruned 4 symbolic links and 58 directories from /usr/local

经常会遇到分组求前几名的问题。比如,求每个班级中总分排名前三的学生。

我们通过如下实验看看怎么解决这个问题。

创建学生分数表

1
2
3
4
5
6
7
CREATE TABLE `score` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`name` varchar(255) DEFAULT NULL COMMENT '学生姓名',
`class` varchar(255) DEFAULT NULL COMMENT '班级',
`score` int(11) DEFAULT NULL COMMENT '总分',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

创建若干条数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DELIMITER //
DROP PROCEDURE IF EXISTS batchInsert;
CREATE PROCEDURE batchInsert(n INT)
BEGIN
DECLARE i INT;
SET i = 0;
WHILE i < n DO
INSERT INTO score(name, class, score) VALUES
(substring(MD5(RAND()), 1, 10), CONCAT('G', ROUND(RAND() * 9)), ROUND(RAND() * 100));
SET i = i + 1;
END WHILE;
END
//
DELIMITER ;
CALL batchInsert(50);

TOP N

HAVING子句中的< 3表示取前两条。

1
2
3
4
5
SELECT s1.class, s1.score FROM score s1
LEFT JOIN score s2 ON s1.class = s2.class AND s1.score <= s2.score
GROUP BY s1.class, s1.score
HAVING COUNT(1) < 3
ORDER BY s1.class, s1.score DESC;

如果是取TOP 1,那就不能用这个自连接了,不然效率非常低下。还是得用MIN, MAX函数来解决。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class   score
G0 66
G0 17
G1 96
G1 92
G2 87
G2 83
G3 67
G3 32
G4 94
G4 37
G5 99
G5 74
G6 40
G7 98
G7 78
G8 100
G8 93
G9 99
G9 92

Qihoo360 Wayne的文件目录为/Development/wayne

运行bee run命令时,会遇到如下错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cd src/backend

bee run -runargs=apiserver
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.10.0
2019/08/10 08:17:53 WARN ▶ 0001 Running application outside of GOPATH
2019/08/10 08:17:53 INFO ▶ 0002 Using 'backend' as 'appname'
2019/08/10 08:17:53 INFO ▶ 0003 Initializing watcher...
Fetching https://goproxy.io/github.com/modern-go/reflect2/@v/list
Fetching https://goproxy.io/sigs.k8s.io/yaml/@v/list
Fetching https://goproxy.io/sigs.k8s.io/@v/list
Fetching https://goproxy.io/github.com/modern-go/@v/list
Fetching https://goproxy.io/github.com/@v/list
build github.com/Qihoo360/wayne/src/backend: cannot load github.com/modern-go/reflect2: cannot find module providing package github.com/modern-go/reflect2
2019/08/10 08:17:55 ERROR ▶ 0004 Failed to build the application: build github.com/Qihoo360/wayne/src/backend: cannot load github.com/modern-go/reflect2: cannot find module providing package github.com/modern-go/reflect2

解决方法,在终端先执行如下命令,以GO MODULE的方式加载包,即可以正常运行。

1
2
export GO111MODULE=on   // mac, linux
set $GO111MODULE=on // windows
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bee run -runargs=apiserver
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v1.10.0
2019/08/10 08:19:26 WARN ▶ 0001 Running application outside of GOPATH
2019/08/10 08:19:26 INFO ▶ 0002 Using 'backend' as 'appname'
2019/08/10 08:19:26 INFO ▶ 0003 Initializing watcher...
Fetching https://goproxy.io/sigs.k8s.io/yaml/@v/list
Fetching https://goproxy.io/github.com/modern-go/reflect2/@v/list
2019/08/10 08:19:35 SUCCESS ▶ 0004 Built Successfully!
2019/08/10 08:19:35 INFO ▶ 0005 Restarting 'backend'...
2019/08/10 08:19:35 SUCCESS ▶ 0006 './backend' is running...
2019/08/10 08:19:35.057 [D] [db.go:75] Initialize database connection: ****:root@tcp(127.0.0.1:3306)/
2019/08/10 08:19:35.076 [I] [asm_amd64.s:1337] http server Running on http://:8080
2019/08/10 08:19:35.076 [I] [asm_amd64.s:1337] Admin server Running on :8088

如果有些包下载不了,还可以设置GOPROXY环境变量。

1
2
export GOPROXY=https://goproxy.io       // mac, linux
set $GOPROXY=on // windows
0%