Step 16 of 18 of the SQL tutorial. To ask how close the picker came, put the table next to itself in a self-join: ir_peaks under two aliases, joined on the spectrum they share. That pairs each reported band with every picked one, which is too many rows. A window function numbers the candidates per band by their distance, and nth = 1 keeps the nearest. Each of Benzaldehyde's 19 reported bands finds a picked one, 13 of them within 3 cm⁻¹ — 2737.1 finds 2737.7, the aldehyde C–H stretch, 0.6 apart — while the worst sits 14.6 away, where the picker merged two bands into one.
It opens on the query SELECT preferred_name, reported, nearest_picked, gap FROM ( SELECT c.preferred_name, ROUND(reported.wavenumber, 1) AS reported, ROUND(picked.wavenumber, 1) AS nearest_picked, ROUND(ABS(reported.wavenumber - picked.wavenumber), 1) AS gap, ROW_NUMBER() OVER ( PARTITION BY reported.id ORDER BY ABS(reported.wavenumber - picked.wavenumber) ) AS nth FROM ir_peaks reported JOIN ir_peaks picked ON picked.ir_spectrum_id = reported.ir_spectrum_id AND picked.source = 'picked' JOIN ir_spectra s ON s.id = reported.ir_spectrum_id JOIN compounds c ON c.id = s.compound_id WHERE reported.source = 'reported' AND c.preferred_name = 'Benzaldehyde' ) WHERE nth = 1 ORDER BY reported DESC, which you can run and change in place.
Ask the same question of a chemical dataset in SQL and in Mango and compare the two answers. The database is a SQLite file your browser downloads once and queries locally, so nothing you write ever leaves your machine — which is also why the tool needs JavaScript.