PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

SQL का उपयोग करके प्रत्येक समूह से अधिकतम स्कोरिंग खिलाड़ी कैसे प्राप्त करें?

row_number() Use का इस्तेमाल करें :

select group_id, player_id
from (
    select
        p.*,
        row_number() over(
            partition by p.group_id 
            order by case 
                when m.first_player = p.player_id then m.first_score 
                else m.second_score 
            end desc,
            player_id
        ) rn
    from players p
    inner join matches m
        on m.first_player = p.player_id or m.second_player = p.player_id
) x
where rn = 1

DB Fiddle पर डेमो :

| group_id | player_id |
| -------- | --------- |
| 1        | 65        |
| 2        | 20        |

नोट:समूह 3 (player_id 40) में केवल एक खिलाड़ी है, और उन्होंने किसी भी खेल में भाग नहीं लिया।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL उच्च उपलब्धता का प्रबंधन - भाग I:PostgreSQL स्वचालित विफलता

  2. तुर्की चरित्र पर ऊपरी कार्य पोस्टग्रेज अपेक्षित परिणाम नहीं देता है

  3. जावा एप्लिकेशन में पोस्टग्रेज परिवर्तन को सूचित करना

  4. PostgreSQL के साथ जाने पर धीमी समस्या

  5. PostgreSQL CASE ... END कई शर्तों के साथ