Team LiB   Previous Section   Next Section

2.13 Reporting the Size of a Set's Complement

2.13.1 Problem

You want to report the number of missing values for a set. As an example, assume that each student must submit four term papers for each course. Not all students have submitted all required papers, and you want to generate a report showing the number that each student has yet to submit for each course.

2.13.2 Solution

SELECT  s.StudentName, s.CourseId, 4-COUNT(TermPaper) Missing
FROM Students s
GROUP BY s.StudentName, s.CourseId
ORDER BY s.StudentName

Using the sample data provided for this chapter, the query in this solution should return the following result:

StudentName  CourseId  Missing     
------------ --------- ----------- 
Andrew       ACCN101   1
Andrew       MGMT120   1
Bert         ACCN101   1
Cindy        ACCN101   2
Cindy        MGMT120   1

2.13.3 Discussion

This query is very straightforward. It's an aggregate query that summarizes results by course and student combination. The aggregate function COUNT(TermPaper) is used to count the number of papers a student submits for a course. That result is then subtracted from the required number — four in this case — and the result is the number of missing term papers.

    Team LiB   Previous Section   Next Section