-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathqueries_pt2.sql
46 lines (37 loc) · 1.49 KB
/
queries_pt2.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
DROP FUNCTION IF EXISTS GetPartyExp(p_id int);
DROP FUNCTION IF EXISTS GetAverageKills(parts bigint, kills bigint);
--Calculater Average monster kills for party
CREATE OR REPLACE FUNCTION GetAverageKills(parts bigint, kills bigint)
RETURNS int AS $$
BEGIN
return kills/parts;
END; $$
LANGUAGE PLPGSQL;
--Get average monster kills of each party for ranking.
SELECT * FROM encounters
WHERE encounters.monster_deaths > GetAverageKills(
(SELECT count(parties.id) FROM parties)
,(SELECT sum(monster_deaths) FROM encounters));
-- Gets all charaters of a certian level who know a certian spell.
SELECT * FROM characters
JOIN Spells_Known ON spells_known.character_id = characters.id
WHERE characters._level = '1' AND spells_known.spell_id = 1;
-- Gets parties where there is at least one characters of certian class.
SELECT * FROM parties
JOIN characters ON parties.id = characters.party_id
WHERE characters._class = 'Ranger';
-- Get all parties and orders them by monster deaths
SELECT * FROM encounters
ORDER BY party_id, monster_id, monster_deaths;
-- Gets all weapons of a certian damage type
SELECT * FROM weapons
WHERE damage_type LIKE '%' || 'Fire' || '%';
-- Gets total characters of certian race.
SELECT characters.race, count(*) FROM characters
GROUP BY characters.race;
-- Get total characters of certain class.
SELECT characters._class, count(*) FROM characters
GROUP BY characters._class;
-- Find specific Armor bonus
SELECT * FROM armor
WHERE bonus = 'Heavy';