更改MySQL

时间:2017-07-21 09:59:35

标签: mysql

通过此查询,我得到一组数据

SELECT UID, CouncilNam, Probabilit, Scored_Lab, PTC_ID
FROM london.london

我想通过PTC_ID和Scored_Lab进行分组,我可以对此进行分组......

SELECT UID, CouncilNam, Probabilit, Scored_Lab, PTC_ID
FROM london.london
GROUP BY PTC_ID, Scored_Lab

但是,在初始查询中,有多行具有Scored_Lab和PTC_ID分组,但是概率值不同。我希望这个集合中的最低值,但是组内的默认选择不提供此功能。

我已经在这里阅读了几十个类似的查询,但仍然无法解决。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果我正确地阅读了您的问题,那么您正在寻找以下内容:

SELECT
    PTC_UD,
    Scored_Lab,
    MIN(Probabilit)    -- take the smallest probability in each group
FROM london.london
GROUP BY PTC_ID, Scored_Lab

请注意,选择UIDCouncilNam列可能无效,或者可能没有意义,因为您没有将它们指定为查询中组的聚合。

以下是一个通用查询,可用于为每个概率最小组获取完全匹配的行:

SELECT t1.*
FROM london.london t1
INNER JOIN
(
    SELECT PTC_UD, Scored_Lab, MIN(Probabilit) AS p_min
    FROM london.london
    GROUP BY PTC_ID, Scored_Lab
) t2
    ON t1.PTC_UD     = t2.PTC_UD     AND
       t1.Scored_Lab = t2.Scored_Lab AND
       t1.Probabilit = t2.p_min