2017-10-23 1 views
-1

Ich versuche, den Unterschied von GPA unter Semester zu finden.SQL, wie man den Unterschied von GPA ohne Verdoppelung findet

ID 1 Semester Fall GPA: 3.0 
ID 1 Semester Fall GPA: 3.0 
ID 1 Semester Spring GPA: 3.5 
ID 2 Semester Fall GPA: 3.0 
ID 3 Semester Fall GPA: 3.0 
ID 3 Semester spring GPA: 3.2 

Da ID 2, keine Feder GPA würde ich ID2 ignorieren. Also, wie sollte ich schreiben, um den Unterschied GPA für ID 1 und ID 3 herauszufinden?

ID 1 : .5 

ID 3 : .2 

habe ich diesen Code unter

select a.id, 
b.gpa - a.gpa as diff 
from your_table a 
join your_table b on a.id = b.id 
where a.semester = 'Fall' 
and b.semester = 'Spring'; 

aber das Ergebnis zeigt, ...

ID1 : .5 
ID1 : .5 
ID3 : .2 

wie kann ich die Vervielfältigung entfernen? 0,5 ID3: 0,2

Ich denke an 'Distinct' die resut als ...

ID1 zu bekommen?

+0

Ya. Sie können distinct wie dieses Query-Format 'Select distinct column_name' verwenden. –

+0

Warum gibt es scheinbar doppelte Zeilen an erster Stelle? Fehlen einige zusätzliche Informationen oder enthält die Tabelle selbst Duplikate? – QHarr

+0

Frage ist dupliziert, siehe https://stackoverflow.com/questions/1641718/how-to-select-unique-records-by-sql – Louisth

Antwort

0

Wenn Sie doppelte entfernen möchten, verwenden Sie distinct

SELECT DISTINCT a.id 
    ,b.gpa - a.gpa AS diff 
FROM table1 a 
INNER JOIN table1 b ON a.id = b.id 
WHERE a.semester = 'Fall' 
    AND b.semester = 'Spring'; 

DEMO

Verwandte Themen