【问题标题】:Sub-Query not Aggregating in Select子查询未在 Select 中聚合
【发布时间】:2016-06-28 05:50:53
【问题描述】:

我有这个选择语句:

SELECT p.WPD, count(b.PID) as ParcelsPerBlck, 
(SELECT count(PID) 
FROM bos05eb 
WHERE ptype BETWEEN 009 AND 133) as ResdOnly 
FROM ebos_parcels05 p, bos05eb b 
WHERE p.PID_LONG = b.PID
GROUP BY p.WPD;

我希望 select 语句中的子查询结果也按 p.WPD 分组。但是我在每一行中得到的查询结果如下:

WPD           ParcelsPerBlck    ResdOnly
01-02-030     38                6198
01-08-035     56                6198    
01-04-060     11                6198

等等。

可以不将子查询的结果分组,以便我只获得每行的子查询ResdOnly的结果计数吗?

【问题讨论】:

    标签: mysql group-by subquery


    【解决方案1】:

    您可以为此使用条件聚合,而无需相关子查询:

    select 
        p.WPD, 
        count(b.PID) as ParcelsPerBlck, 
        sum(case when b.ptype between 009 AND 133 then 1 else 0 end) as ResdOnly 
    from 
        ebos_parcels05 p
    join 
        bos05eb b on p.PID_LONG = b.PID
    group by 
        p.WPD
    

    请注意显式 join 语法的使用 -- 无需在 from 子句中使用逗号。

    【讨论】:

      猜你喜欢
      • 2021-02-01
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 2013-12-06
      • 2015-01-31
      • 2023-04-04
      • 1970-01-01
      • 2011-04-28
      相关资源
      最近更新 更多