- Distribution statistik för kvartal
Miljö: distribution-data-int.ilog.se
Databas: ilogdistributiondb
Antal ordrar i viktklass
SELECT count(*) AS weight_class FROM consignments con
LEFT JOIN groups g ON con.group_id = g.id
LEFT JOIN terminal t ON g.terminal = t.code
WHERE deliverydate BETWEEN 'start_date' AND 'end_date'
AND weight > min_weight AND weight <=max_weight
GROUP BY t.code ORDER BY t.code;
Exempel: SELECT count(*) AS weight_class FROM consignments con LEFT JOIN groups g ON con.group_id = g.id LEFT JOIN terminal t ON g.terminal = t.code WHERE deliverydate BETWEEN '2026-01-01' AND '2026-03-31' AND weight > 0 AND weight <=30 GROUP BY t.code ORDER BY t.code;
Totala vikten i ton per distrikt
SELECT t.code, round(sum(weight)/1000) FROM consignments con
LEFT JOIN groups g ON con.group_id = g.id
LEFT JOIN terminal t ON g.terminal = t.code
WHERE deliverydate between 'start_date' and 'end_date'
GROUP BY t.code ORDER BY t.code
Exempel: SELECT round(sum(weight)/1000) FROM consignments con LEFT JOIN groups g ON con.group_id = g.id LEFT JOIN terminal t ON g.terminal = t.code WHERE deliverydate between '2026-01-01' and '2026-03-31' GROUP BY t.code ORDER BY t.code;
Örebro BUDBILEN
SELECT count(*) FROM consignments WHERE group_id = 85
AND deliverydate::date BETWEEN 'start_date' and 'end_date';
Förslag - vidareutveckling
Detta är förslag på mer generella utdrag som vi skulle kunna tillgängliggöra för alla åkerier och distrikt, med avgränsad åtkomst per åkeri.
Obs! Förslagen är i nuläget inte validerade!
Ordervolym per åkeri och månad - "Budbilen"
with month as (
(
with monthspan as (
select
generate_series(
date_trunc(
'month', now() - '4 month' :: interval
),
date_trunc(
'month', now() + '1 month' :: interval
),
'1 month' :: interval
) as start
)
select
date_trunc('month', start) as start,
to_char(start, 'YYYY-MM') as isotext
from
monthspan
order by
start
)
),
ordervolume as (
select
group_id as gid,
to_char(deliverydate, 'YYYY-MM') as month,
count(*) as order
from
consignments
group by
group_id,
to_char(deliverydate, 'YYYY-MM')
)
select
v.gid,
g.terminal as ter,
g.name as transporter,
v.month,
v.order as volume
from
month m
left join ordervolume v on m.isotext = v.month
left join groups g on g.id = v.gid
order by
terminal,
g.name,
v.month;
TODO viktspann, per intervall från värden
with weightgroup as (select * from
(
values
(0, 10, '1 - 10 kg'),
(10, 20, '11 - 20 kg'),
(20, 30, '21 - 30 kg')
) as weightgroup (start, "end", label)
)
select * from weightgroup /* left join consignments on ... group by weightgroup.start .... */ order by start;