कुल FILTER
खंड पोस्टग्रेज में 9.4 या नया छोटा और तेज़ है:
SELECT u.name
, count(*) FILTER (WHERE g.winner_id > 0) AS played
, count(*) FILTER (WHERE g.winner_id = u.id) AS won
, count(*) FILTER (WHERE g.winner_id <> u.id) AS lost
FROM games g
JOIN users u ON u.id IN (g.player_1_id, g.player_2_id)
GROUP BY u.name;
- मैनुअल
- विकी पोस्ट करता है
- Depesz ब्लॉग पोस्ट
पोस्टग्रेज में 9.3 (या कोई भी version) यह अभी भी नेस्टेड उप-चयनों या CASE
. से छोटा और तेज़ है भाव:
SELECT u.name
, count(g.winner_id > 0 OR NULL) AS played
, count(g.winner_id = u.id OR NULL) AS won
, count(g.winner_id <> u.id OR NULL) AS lost
FROM games g
JOIN users u ON u.id IN (g.player_1_id, g.player_2_id)
GROUP BY u.name;
विवरण:
- पूर्ण प्रदर्शन के लिए, SUM तेज़ है या COUNT?