1

name行、、、gender (M/F)およびを含む人々のテーブルがあるとしましょうage

SQLクエリは次のようになります。

  • すべての女性
  • 最大5人の男性
  • 年齢でソートされた人々

NB。これは不自然な例です。また、Postgres固有の回答も歓迎します。

4

1 に答える 1

4
SELECT name, gender, age
  FROM ( SELECT name, gender, age
           FROM people
           WHERE gender = 'F'
         UNION ALL
         ( SELECT name, gender, age
             FROM people
             WHERE gender = 'M'
             LIMIT 5  
         )
       ) x
  ORDER BY age

上記の解決策は特定の男性を選択しないことに注意してください。必要に応じて、男性のサブクエリに順序を適用します。

これは、剪定が行われる前に、年齢別に男性を注文します。

SELECT name, gender, age
  FROM ( SELECT name, gender, age
               ,ROW_NUMBER() OVER (PARTITION BY gender ORDER BY age) gender_count
           FROM people
        ) x
   WHERE gender = 'F'
      OR gender_count <= 5

ところで、私は「性別」が通常文法的な参照に使用されることを発見しました。この場合、「性別」は私が使用したであろう用語でした。

于 2012-05-22T01:59:33.390 に答える