Hai provato

codice:
SELECT substring(lc_codart, 1, 3), count(*) FROM (SELECT lc_codart,ROW_NUMBER() OVER (ORDER BY lc_note) as ct FROM table_name WHERE (lc_note!='')) SUB WHERE ct >=0 AND ct<=40 group by substring(lc_codart, 1, 3)