假设我有一个与NBA球员合作的简单表:
id,player,mp,ppg(mp - 比赛,ppg - 每场比赛)。
我需要一个可以获得所有人的查询,但将结果分成两部分:
理想的输出是(例子):
n. player mp ppg
1. player1 82 32.5
2. player2 56 32.1
3. player3 82 29.7
4. player4 80 27.6
...
70. player70 75 1.5 (lowest in the 30+ games group)
71. player71 29 35.7 (highest in the less than 30 games group)
72. player72 19 31.3
...
组1)排在第一位(更重要),所以即使第2组中的PPG高于第1组中的最佳PPG,它也会在玩家超过30场比赛的组中最差的PPG之后下降。
有没有办法在一个查询中执行此操作?我正在使用mySQL。谢谢!
答案 0 :(得分:1)
select id, player, mp, ppg
from
playerTable
order by if (mp>=30, 1, 0) desc, ppg desc, mp desc`
答案 1 :(得分:0)
SELECT *
FROM tablename
ORDER BY
CASE WHEN mp >= 30 THEN PPG END DESC,
CASE WHEN mp < 30 THEN PPG END ASC
答案 2 :(得分:0)
假设ppq
始终低于1000000,这将起作用:
SELECT
* -- or whatever you want
FROM players
ORDER BY IF(mp>=30,1000000+ppg,mp) desc
这假定第二组按mp
desc排序(如示例所示),而不是ppg
(如文本中)
答案 3 :(得分:0)
首先按MP> 30;然后按PPG
ORDER BY (CASE WHEN mp >= 30 THEN 1 ELSE 2 END) ASC, PPG DESC
答案 4 :(得分:0)
select player, mp, ppg
from t
order by mp < 30, ppg desc