PostgreSQL新手在这里。我的数据看起来像这样:
+-----------+---------+-------+
| StudentID | ClassID | Grade |
+-----------+---------+-------+
| 19927 | A13 | 5 |
| 19927 | A07 | 3 |
| 19927 | B22 | 7 |
| 10001 | A13 | 2 |
| 10001 | A07 | 8 |
| 22207 | A13 | 7 |
| 22207 | A07 | 10 |
| 22207 | C80 | 2 |
| 27516 | A07 | 8 |
+-----------+---------+-------+
我试图选择A13级成绩高于A07级的所有学生。这意味着只包括实际上在两个班级都有成绩的学生。
最好的方法是什么?在Stata上长大后,我通常会尝试:
但我觉得这非常像SQL一样。
答案 0 :(得分:1)
Postgresql提供了许多不同的方法,这里是一个
SELECT a13.* FROM
(SELECT * FROM table1 where classid='A13') as a13
INNER JOIN
(SELECT * FROM table1 where classid='A07') as a07
ON a13.grade > a07.grade