Merhaba,
1. Sorunuza cevabım
DataGridView in DataSource/DataSet sorgusunda, "ORDER BY KolonAdi DESCENDING" sıralama yaptırabilirsin.
SELECT * FROM TabloAdi
ORDER BY Tarih DESC, Giris_Saati DESC, Cikis_Saati DESC
ya da
dataGridView1.Sort(dataGridView1.Columns["Tarih"], System.ComponentModel.ListSortDirection.Descending );
şeklinde yapabilirsin.

2. Sorunuza cevabım
Bence,
Veritabanına kayıt (INSERT) ederken Aynı Personelin her bir giriş-çıkış saatini ayrı ayrı kayıt etmek yerine ,
Çıkış saatini UPDATE ederek de yapabilirsiniz, Yani Personelin Giriş Saatini INSERT INTO ile post edin.
Çıkış Saatini ise " UPDATE TabloAdi SET Cikis_Saati = Date.Now.ToString("hh:mm:ss tt")
WHERE Personel_Id = 123 AND Tarih = '09/02/2022' " şeklinde update edin.
(Bu arada mükerrer giriş çıkış kontrollerini de yapmalısınız.)

SQL Sorgusu ile yapmak istersek,
SELECT Personel_Id, Tarih,
MAX(Giris_Saati) AS Giris_Saati,
MAX(Cikis_Saati) AS Cikis_Saati
FROM TabloAdi
GROUP BY Personel_Id, Tarih
ORDER BY Tarih DESC

şeklinde yapılabilir...
Kolay gelsin.