При выборке каждой записи поставить в соответствие ей
числовой показатель, округлить его до некоторой степени грубости так, чтобы после группировки по округлённому числу записи собрались по 222 штуки (на пиксель). (А не по 1000 записей, как ты спросил, ибо это не то, что надо).
В группировке брать AVERAGE() и в растре графика рисовать одну точку, либо MIN() и MAX() и в растре графика заполнять все пиксели столбика от минимума до максимума.
Обычно числовой показатель есть и так — это та величина, которая откладывается в графике по оси X. Это может быть время или иногда порядковый номер записи.
Что касается самого рисования, то вместо попиксельных обращений, можно создать необходимый растр в памяти, а потом разом его перенести (
SetDIBitsToDevice) на дисплей.