SQL Dojo Beta
Tecnica

Un istogramma in SQL

Conta i valori per intervallo di ampiezza fissa, mantenendo gli intervalli vuoti.

L'intervallo di un valore è FLOOR(x / width) * width. Conta per intervallo, poi fai una LEFT JOIN dei conteggi su tutti gli intervalli di generate_series(0, last_bin, width) e applica COALESCE a 0: senza la serie, un intervallo vuoto scompare e la forma mente. Scegliere l'ampiezza è l'analisi: troppo larga nasconde la forma, troppo stretta mostra rumore.

WITH baskets AS (
  SELECT o.order_id, SUM(l.quantity * l.unit_price) AS total
  FROM orders o JOIN order_lines l ON l.order_id = o.order_id
  GROUP BY o.order_id
)
SELECT CAST(FLOOR(total / 100) * 100 AS INTEGER) AS bin_start,
       COUNT(*) AS orders,
       repeat('█', CAST(FLOOR(COUNT(*) / 50) AS INTEGER)) AS bar
FROM baskets
GROUP BY 1
ORDER BY 1;
bin_startordersbar
02011████████████████████████████████████████
100420████████
20045
30017
4006
5001
Provalo in Randori