2016-09-30 1 views
1

PostgreSQL初心者はこちら。私はクラスA07よりもクラスA13で高い等級を持つすべての学生を選択しようとしている値に基づいて選択する方法は、別の列で「キー入力」ですか?

+-----------+---------+-------+ 
| 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 | 
+-----------+---------+-------+ 

:私はこのようになり、データを持っています。これは、実際に両方のクラスに成績がある学生のみを含めることを意味します。

これを行うにはどうすればよいですか? Stataの上で育った、私は普通しようとするだろう:

  1. をのclassID = A07やA13
  2. が広い
  3. に整形行のみを選択A13> A07
にwhere句を使用して選択します

しかし、これは非常にun-SQLのような感じです。

答えて

1

PostgreSQLは、ここで、それを行うためのさまざまな方法の多くを提供します1

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 
関連する問題