2

col1、col2、col3、列を持つ多くのレコードを持つテーブルabcがあります。

dept         | name |  marks |

science         abc      50
science         cvv      21
science         cvv      22  
maths           def      60
maths           abc      21
maths           def      62
maths           ddd      90

ddd-1、cvv-2、abc -3、それ以外の場合は4としてランク付けして、部門と名前で注文する必要があります。次に、個人の最大マークを見つける必要があります。期待される結果は

dept         | name |  marks |

science         cvv      22
science         abc      50
maths           ddd      90
maths           abc      21
maths           def      62

。どうすればいいですか。

4

2 に答える 2

3
SELECT
  dept,
  name,
  MAX(marks)   AS mark
FROM
  yourTable
GROUP BY
  dept,
  name
ORDER BY
  CASE WHEN name = 'ddd' THEN 1
            name = 'cvv' THEN 2
            name = 'abc' THEN 3
                         ELSE 4 END

または、できれば、ソート順を含む別のテーブルを用意してください。

SELECT
  yourTable.dept,
  yourTable.name,
  MAX(yourTable.marks)   AS mark
FROM
  yourTable
INNER JOIN
  anotherTable
    ON yourTable.name = anotherTable.name
GROUP BY
  yourTable.dept,
  youtTable.name
ORDER BY
  anotherTable.sortingOrder
于 2012-11-02T16:35:07.173 に答える
0

これはうまくいくはずです:

SELECT Dept, Name, MAX(marks) AS mark
FROM yourTable
GROUP BY Dept, Name
ORDER BY CASE WHEN Name = 'ddd' THEN 1
              WHEN Name = 'cvv' THEN 2
              WHEN Name = 'ABC' THEN 3
              ELSE 4 END
于 2013-05-20T07:26:30.313 に答える