db views now enumerate rows
This commit is contained in:
parent
684ded6af0
commit
72bb54a536
4 changed files with 45 additions and 12 deletions
32
backend/db/initScripts/_createSchema.sql
Normal file
32
backend/db/initScripts/_createSchema.sql
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
CREATE TABLE "user" (
|
||||
username VARCHAR(32) PRIMARY KEY
|
||||
);
|
||||
|
||||
CREATE TABLE game (
|
||||
id SERIAL PRIMARY KEY,
|
||||
score INTEGER NOT NULL,
|
||||
playtime TIME NOT NULL,
|
||||
date DATE NOT NULL,
|
||||
username VARCHAR(32) NOT NULL,
|
||||
FOREIGN KEY (username) REFERENCES "user"
|
||||
);
|
||||
|
||||
CREATE VIEW user_data AS (
|
||||
SELECT
|
||||
username,
|
||||
max(score) AS highscore,
|
||||
sum(score) AS total_score,
|
||||
sum(playtime) AS total_playtime,
|
||||
avg(score) AS average_score,
|
||||
count(*) AS games_played
|
||||
FROM game
|
||||
GROUP BY username
|
||||
);
|
||||
|
||||
CREATE VIEW lb_highscore AS (
|
||||
SELECT row_number() OVER (ORDER BY max(score) DESC) AS rank, username, max(score) AS highscore FROM game GROUP BY username ORDER BY rank
|
||||
);
|
||||
|
||||
CREATE VIEW lb_total_playtime AS (
|
||||
SELECT row_number() OVER (ORDER BY sum(playtime) DESC) AS rank, username, sum(playtime) AS total_playtime FROM game GROUP BY username ORDER BY rank
|
||||
);
|
||||
41
backend/db/initScripts/loadMockData.sql
Normal file
41
backend/db/initScripts/loadMockData.sql
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
insert into "user" (username) values ('dpettus0');
|
||||
insert into "user" (username) values ('egreetland1');
|
||||
insert into "user" (username) values ('smontford2');
|
||||
insert into "user" (username) values ('idagwell3');
|
||||
insert into "user" (username) values ('lgagan4');
|
||||
insert into "user" (username) values ('acarmont5');
|
||||
insert into "user" (username) values ('kjermyn6');
|
||||
insert into "user" (username) values ('dokieran7');
|
||||
insert into "user" (username) values ('pdrinkel8');
|
||||
insert into "user" (username) values ('amelladew9');
|
||||
|
||||
insert into game (username, score, playtime, date) values ('dpettus0', 74, '19:59', '2022-07-19');
|
||||
insert into game (username, score, playtime, date) values ('dpettus0', 86, '20:32', '2022-11-24');
|
||||
insert into game (username, score, playtime, date) values ('dpettus0', 68, '10:41', '2022-03-24');
|
||||
insert into game (username, score, playtime, date) values ('egreetland1', 39, '5:55', '2022-06-01');
|
||||
insert into game (username, score, playtime, date) values ('egreetland1', 20, '9:23', '2022-03-12');
|
||||
insert into game (username, score, playtime, date) values ('egreetland1', 28, '23:45', '2022-04-01');
|
||||
insert into game (username, score, playtime, date) values ('smontford2', 44, '18:43', '2022-06-24');
|
||||
insert into game (username, score, playtime, date) values ('smontford2', 92, '14:54', '2022-11-06');
|
||||
insert into game (username, score, playtime, date) values ('smontford2', 73, '0:45', '2022-07-26');
|
||||
insert into game (username, score, playtime, date) values ('idagwell3', 27, '2:49', '2022-02-03');
|
||||
insert into game (username, score, playtime, date) values ('idagwell3', 26, '2:32', '2022-07-19');
|
||||
insert into game (username, score, playtime, date) values ('idagwell3', 12, '17:03', '2022-04-25');
|
||||
insert into game (username, score, playtime, date) values ('lgagan4', 6, '8:49', '2021-12-03');
|
||||
insert into game (username, score, playtime, date) values ('lgagan4', 22, '22:27', '2022-03-02');
|
||||
insert into game (username, score, playtime, date) values ('lgagan4', 94, '1:04', '2022-10-19');
|
||||
insert into game (username, score, playtime, date) values ('acarmont5', 2, '2:14', '2022-04-06');
|
||||
insert into game (username, score, playtime, date) values ('acarmont5', 21, '17:18', '2022-06-03');
|
||||
insert into game (username, score, playtime, date) values ('acarmont5', 33, '16:01', '2022-02-02');
|
||||
insert into game (username, score, playtime, date) values ('kjermyn6', 27, '7:03', '2022-02-06');
|
||||
insert into game (username, score, playtime, date) values ('kjermyn6', 62, '0:45', '2022-11-15');
|
||||
insert into game (username, score, playtime, date) values ('kjermyn6', 12, '8:54', '2022-06-29');
|
||||
insert into game (username, score, playtime, date) values ('dokieran7', 63, '16:01', '2022-11-05');
|
||||
insert into game (username, score, playtime, date) values ('dokieran7', 29, '0:46', '2022-10-01');
|
||||
insert into game (username, score, playtime, date) values ('dokieran7', 67, '1:27', '2022-09-29');
|
||||
insert into game (username, score, playtime, date) values ('pdrinkel8', 84, '10:37', '2021-12-18');
|
||||
insert into game (username, score, playtime, date) values ('pdrinkel8', 14, '19:14', '2022-01-31');
|
||||
insert into game (username, score, playtime, date) values ('pdrinkel8', 21, '19:04', '2022-03-08');
|
||||
insert into game (username, score, playtime, date) values ('amelladew9', 46, '2:34', '2022-04-18');
|
||||
insert into game (username, score, playtime, date) values ('amelladew9', 78, '9:33', '2022-09-10');
|
||||
insert into game (username, score, playtime, date) values ('amelladew9', 82, '11:19', '2022-11-29');
|
||||
Loading…
Add table
Add a link
Reference in a new issue