@bweaver4 , I agree with @MikeBrinkman that Canvas Data 2 is a good place to get a complete list of classic quizzes. If you want to be sure to find ungraded surveys & practice quizzes, I'd recommend leaving the assignments table out of the join. A simple count of classic quizzes of all types per course could come from a query such as
SELECT c.id
, c.course_code
, c.name
, COUNT(q.id) AS classic_quiz_count
FROM canvas.courses c
JOIN canvas.quizzes q ON q.context_id = c.id
WHERE q.context_type = 'Course'
/* It should be safe to exclude deleted quizzes and courses */
AND q.workflow_state != 'deleted'
AND c.workflow_state != 'deleted'
GROUP BY c.id
, c.course_code
, c.name
;
If you wanted to exclude classic quizzes that no student has seen AND have a front-end approach, I think you could use Admin Analytics. If you go to the Overview, confirm that filters include terms you want, click on the classic quizzes bar in the Interactions chart, you will be able to download a full list of courses where students have interacted with or viewed quizzes.
How do I view the Admin Analytics Overview Dashboard?