Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql PostgresSql如何按多个列进行分组并同时获取所有其他列?_Postgresql_Group By - Fatal编程技术网

Postgresql PostgresSql如何按多个列进行分组并同时获取所有其他列?

Postgresql PostgresSql如何按多个列进行分组并同时获取所有其他列?,postgresql,group-by,Postgresql,Group By,我想按三列进行分组,并从所有列中获取数据 这是可行的,但我没有从lap.valid、lap.“timestamp”和lap.maxspeed_kmh获取数据: SELECT players.name, cars.car, tracks.track, min(lap.laptime) AS best_laptime FROM lap JOIN playerinsession ON lap.playerinsessionid = playerinsessio

我想按三列进行分组,并从所有列中获取数据

这是可行的,但我没有从lap.valid、lap.“timestamp”和lap.maxspeed_kmh获取数据:

SELECT 
    players.name,
    cars.car,
    tracks.track,
    min(lap.laptime) AS best_laptime
FROM lap
    JOIN playerinsession ON lap.playerinsessionid = playerinsession.playerinsessionid
    JOIN session ON playerinsession.sessionid = session.sessionid
    JOIN tracks ON session.trackid = tracks.trackid
    JOIN cars ON playerinsession.carid = cars.carid
    JOIN players ON playerinsession.playerid = players.playerid
GROUP BY
    players.name,
    cars.car,
    tracks.track;
这就是我想做的:

SELECT 
    players.name,
    cars.car,
    tracks.track,
    min(lap.laptime) AS best_laptime,
    lap.valid,
    lap."timestamp",
    lap.maxspeed_kmh
FROM lap
    JOIN playerinsession ON lap.playerinsessionid = playerinsession.playerinsessionid
    JOIN session ON playerinsession.sessionid = session.sessionid
    JOIN tracks ON session.trackid = tracks.trackid
    JOIN cars ON playerinsession.carid = cars.carid
    JOIN players ON playerinsession.playerid = players.playerid
GROUP BY
    players.name,
    cars.car,
    tracks.track;
但我收到一个错误“column lap.valid必须出现在GROUP BY…”,我如何解决这个问题

重要的是让每名球员在每一辆车和每一条赛道上都有最快的圈速。每一条赛道都有数百圈的时间,由多个运动员在不同的赛车上完成。

检查

检查

检查

检查


您还需要在组中添加lap.valid、lap.timestamp、lap.maxspeed\u kmh。但问题是你真正想从你的提问中得到什么……是的,我知道这是可能的,但我希望每个球员结合每辆车和每条赛道都能以最快的速度跑一圈。如果我按所有参数分组,我会得到很多行,对吗?我回家后会尝试@Clodoaldo Neto的答案。你也需要在你的小组中添加lap.valid、lap.timestamp、lap.maxspeed\u kmh。但问题是你真正想从你的提问中得到什么……是的,我知道这是可能的,但我希望每个球员结合每辆车和每条赛道都能以最快的速度跑一圈。如果我按所有参数分组,我会得到很多行,对吗?我回家后会尝试@Clodoaldo Neto的答案。你也需要在你的小组中添加lap.valid、lap.timestamp、lap.maxspeed\u kmh。但问题是你真正想从你的提问中得到什么……是的,我知道这是可能的,但我希望每个球员结合每辆车和每条赛道都能以最快的速度跑一圈。如果我按所有参数分组,我会得到很多行,对吗?我回家后会尝试@Clodoaldo Neto的答案。你也需要在你的小组中添加lap.valid、lap.timestamp、lap.maxspeed\u kmh。但问题是你真正想从你的提问中得到什么……是的,我知道这是可能的,但我希望每个球员结合每辆车和每条赛道都能以最快的速度跑一圈。如果我按所有参数分组,我会得到很多行,对吗?回家后我会尝试@Clodoaldo Neto的答案。我尝试了一些独特的方式,但从未成功,但这很有魅力!谢谢:)我试过用某种方式来区分,但一直没有成功,但效果很好!谢谢:)我试过用某种方式来区分,但一直没有成功,但效果很好!谢谢:)我试过用某种方式来区分,但一直没有成功,但效果很好!谢谢:)
select distinct on (p.name, c.car, t.track)
    p.name,
    c.car,
    t.track,
    l.laptime as best_laptime,
    l.valid,
    l."timestamp",
    l.maxspeed_kmh
from
    lap l
    join
    playerinsession on l.playerinsessionid = playerinsession.playerinsessionid
    join
    session on playerinsession.sessionid = session.sessionid
    join
    tracks t on session.trackid = t.trackid
    join
    cars c on playerinsession.carid = c.carid
    join
    players p on playerinsession.playerid = p.playerid
order by p.name, c.car, t.track, l.laptime