54 lines
2.1 KiB
Cheetah
54 lines
2.1 KiB
Cheetah
WITH filtered_killmails AS (
|
|
SELECT
|
|
fk.killmail_id,
|
|
fk.solar_system_id,
|
|
fk.victim_ship_type_id
|
|
FROM killmails fk
|
|
{{if .HasModules}}
|
|
INNER JOIN modules fm ON fk.killmail_id = fm.killmail_id
|
|
{{end}}
|
|
WHERE 1=1
|
|
{{if .Ship}}AND fk.victim_ship_type_id = ?{{end}}
|
|
{{if .Systems}}AND fk.solar_system_id IN ?{{end}}
|
|
{{if .HasModules}}AND fm.item_type_id IN ?{{end}}
|
|
),
|
|
ship_stats AS (
|
|
SELECT
|
|
victim_ship_type_id as id,
|
|
COUNT(*) as count
|
|
FROM filtered_killmails
|
|
GROUP BY victim_ship_type_id
|
|
),
|
|
system_stats AS (
|
|
SELECT
|
|
solar_system_id as id,
|
|
COUNT(*) as count
|
|
FROM filtered_killmails
|
|
GROUP BY solar_system_id
|
|
),
|
|
module_stats AS (
|
|
SELECT
|
|
fm.item_type_id,
|
|
fm.slot,
|
|
COUNT(DISTINCT fm.killmail_id) as count
|
|
FROM modules fm
|
|
WHERE fm.killmail_id IN (SELECT killmail_id FROM filtered_killmails)
|
|
GROUP BY fm.item_type_id, fm.slot
|
|
),
|
|
limited_killmails AS (
|
|
SELECT killmail_id
|
|
FROM filtered_killmails
|
|
ORDER BY killmail_id
|
|
LIMIT ?
|
|
)
|
|
SELECT
|
|
toString(COUNT(*)) as total_killmails,
|
|
(SELECT arraySort(x -> x.1, arrayZip(groupArray(id), groupArray(count))) FROM ship_stats) as ships,
|
|
(SELECT arraySort(x -> x.1, arrayZip(groupArray(id), groupArray(count))) FROM system_stats) as systems,
|
|
(SELECT arraySort(x -> x.1, arrayZip(groupArray(item_type_id), groupArray(count))) FROM module_stats WHERE slot = 'High') as modules_high,
|
|
(SELECT arraySort(x -> x.1, arrayZip(groupArray(item_type_id), groupArray(count))) FROM module_stats WHERE slot = 'Mid') as modules_mid,
|
|
(SELECT arraySort(x -> x.1, arrayZip(groupArray(item_type_id), groupArray(count))) FROM module_stats WHERE slot = 'Low') as modules_low,
|
|
(SELECT arraySort(x -> x.1, arrayZip(groupArray(item_type_id), groupArray(count))) FROM module_stats WHERE slot = 'Rig') as modules_rigs,
|
|
(SELECT arraySort(x -> x.1, arrayZip(groupArray(item_type_id), groupArray(count))) FROM module_stats WHERE slot = 'Drone') as modules_drones,
|
|
(SELECT groupArray(killmail_id) FROM limited_killmails) as killmail_ids
|