Files
zkill-susser/templates/comprehensive_stats.sql.tmpl
2026-01-06 18:38:48 +01:00

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