Try this:
select students.student_name
from grades
inner join students on grades.student_id = students.student_id
group by student_name
having count(*) > 1
Example:
create table grades (student_id int, grade char(1));
insert into grades values (6, 'A'), (1, 'B'), (1, 'F'), (7, 'C'), (6, 'A');
create table students (student_id int, student_name varchar(20));
insert into students values (1, 'roy'), (6,'bob'), (7,'art');
select students.student_name
from grades
inner join students on grades.student_id = students.student_id
group by student_name
having count(*) > 1
Result:
student_name
bob
roy
This should result in bob and roy.
Command line on Linux, assuming you have sqlite:
~$ sqlite
SQLite version 2.8.17
Enter ".help" for instructions
sqlite> create table grades (student_id int, grade char(1));
sqlite> insert into grades values (6, 'A');
sqlite> insert into grades values (1, 'B');
sqlite> insert into grades values (1, 'F');
sqlite> insert into grades values (7, 'C');
sqlite> insert into grades values (6, 'A');
sqlite>
sqlite> create table students (student_id int, student_name varchar(20));
sqlite> insert into students values (1, 'roy');
sqlite> insert into students values (6,'bob');
sqlite> insert into students values (7,'art');
sqlite>
sqlite> select students.student_name
...> from grades
...> inner join students on grades.student_id = students.student_id
...> group by student_name
...> having count(*) > 1;
roy
bob
sqlite>