gpt4 book ai didi

mySQL "get TOP 100 scores"查询让我抓狂

转载 作者:行者123 更新时间:2023-11-30 22:11:53 25 4
gpt4 key购买 nike

我问过this question星期五,从那以后我一直在尝试我能想到的一切,但都没有成功

我无法让它工作

SELECT * FROM WorldFlowers_table GROUP BY device_id ORDER BY score DESC LIMIT 100 

然后还给我:

  • 得分前 100 的 100 行

  • 进行过滤以便仅显示每个 device_id 的最高分

  • 按分数降序排序

@1000111 和 Giorgos Betsos

一个人走进一个房间,说,“请帮忙,我正在竭尽全力解决一个你们任何人都可以在眨眼间解决的简单问题,这让我发疯了”

两个人转身,朝那个人的脸开枪,然后说“重复”

我累了:(

/////////解决草莓评论

我尝试在 SQLFiddle 中构建它

CREATE TABLE WorldFlowers_table 
(
id int identity primary key,
timestamp varchar(20),
name varchar(30),
score int,
color varchar(30),
flower varchar(30),
device_id varchar(30),
);

INSERT INTO WorldFlowers_table
(timestamp, name,score, color, flower, device_id )
VALUES
('1475151826', 'RI-RI', 42, '0|0|0|0|0|0|0|0|0|0', '[1475152768|42|4|0.0]', 'XYZ' ),
('1475151826', 'RO-RO', 46, '0|0|0|0|0|0|0|0|0|0', '[1475152768|42|4|0.0]', 'ABC' ),
('1475151826', 'RI-RI', 42, '0|0|0|0|0|0|0|0|0|0', '[1475152768|42|4|0.0]', 'XYZ' ),
('1475151826', 'RA-RA', 45, '0|0|0|0|0|0|0|0|0|0', '[1475152768|42|4|0.0]', 'ABC' ),
('1475151826', 'RU-RU', 42, '0|0|0|0|0|0|0|0|0|0', '[1475152768|42|4|0.0]', 'XYZ' ),
('1475151826', 'RE-RE', 44, '0|0|0|0|0|0|0|0|0|0', '[1475152768|42|4|0.0]', 'DEF' ),
('1475151826', 'RY-RY', 42, '0|0|0|0|0|0|0|0|0|0', '[1475152768|42|4|0.0]', 'XYZ' ),
('1475151826', 'RX-RX', 43, '0|0|0|0|0|0|0|0|0|0', '[1475152768|42|4|0.0]', 'XYZ' ),
('1475151826', 'RA-RA', 42, '0|0|0|0|0|0|0|0|0|0', '[1475152768|42|4|0.0]', 'DEF' );

但是它只构建了 2 次中的一次。

我正在寻找的返回将是

+------+------------+--------------------------------------------+
| id | timestamp | name | score | color | flower | device_id |
+------+------------+--------------------------------------------+
| 2 | blabla | RO-RO | 46 | ... | ... | ABC |
| 5 | blabla | RE-RE | 44 | ... | ... | DEF |
| 7 | blabla | RX-RX | 43 | ... | ... | XYZ |
+------+-------+-------------------------------------------------+

.每次返回每个设备 ID 中只有 1 个

.每个设备ID的最高分

.结果在 ORDER BY score DESC 中给出

更新:来自 scaisEdge 的这个似乎工作正常

从分数中选择 * WHERE (名字, 分数) IN ( SELECT 名字, MAX(分数) FROM分数 按名称分组
按分数排序 ) 按分数排序 限制 100;

最佳答案

如果我没理解错,你想要前 100 名最高的设备得分

  SELECT *
FROM WorldFlowers_table
WHERE (device_id, score) IN (SELECT device_id, max(score)
FROM WorldFlowers_table
GROUP BY device_id )
ORDER BY score DESC
LIMIT 100

关于mySQL "get TOP 100 scores"查询让我抓狂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39833606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com