Skip to content

Commit 8d6fef4

Browse files
committed
understanding-the-Error-Column-Is-Invalid-in-the-Select-List-Because-It-Is-Not-Contained-in-either-an-Aggregate-Function-or-the-Group-by-Clause
1 parent fd127a7 commit 8d6fef4

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
-- Understanding the Error
2+
3+
SELECT enrollment_date, name, AVG(gpa) AS average_gpa
4+
FROM Student
5+
GROUP BY enrollment_date;
6+
7+
8+
-- Remove the Unaggregated Column From the SELECT Clause
9+
10+
SELECT enrollment_date, AVG(gpa) AS average_gpa
11+
FROM Student
12+
GROUP BY enrollment_date;
13+
14+
15+
-- Use an Aggregate Function
16+
17+
SELECT enrollment_date, MIN(name) AS example_student, AVG(gpa) AS average_gpa
18+
FROM Student
19+
GROUP BY enrollment_date;
20+
21+
22+
-- Include the Column in the GROUP BY Clause
23+
24+
SELECT name, enrollment_date, AVG(gpa) AS avg_gpa
25+
FROM Student
26+
GROUP BY name, enrollment_date;
27+
28+
29+
-- Use a Subquery or CTE
30+
-- Subquery
31+
32+
SELECT s.*
33+
FROM Student s
34+
JOIN (
35+
SELECT enrollment_date, MAX(gpa) AS top_gpa
36+
FROM Student
37+
GROUP BY enrollment_date
38+
) AS grouped
39+
ON s.enrollment_date = grouped.enrollment_date
40+
AND s.gpa = grouped.top_gpa;
41+
42+
-- CTE
43+
44+
WITH TopGPA AS (
45+
SELECT enrollment_date, MAX(gpa) AS top_gpa
46+
FROM Student
47+
GROUP BY enrollment_date
48+
)
49+
SELECT s.*
50+
FROM Student s
51+
JOIN TopGPA t
52+
ON s.enrollment_date = t.enrollment_date
53+
AND s.gpa = t.top_gpa;
54+
55+
56+
-- Use Window Functions for Aggregate Context Without GROUP BY
57+
58+
SELECT
59+
id,
60+
name,
61+
enrollment_date,
62+
gpa,
63+
AVG(gpa) OVER (PARTITION BY enrollment_date) AS avg_gpa_for_enroll_date
64+
FROM Student;
65+
66+

0 commit comments

Comments
 (0)