【问题标题】:Can this simple select be improved using GROUP BY or HAVING?可以使用 GROUP BY 或 HAVING 改进这个简单的选择吗?
【发布时间】:2012-01-06 23:41:15
【问题描述】:

我有以下参考数据。

STORE_CODE      SUPPLIER_CODE
------          ------
ASDA            A3
ASDA            A2
TESCO           A2
TESCO           A4
ASDA            A4
ASDA            A4
ASDA            A4
ASDA            A4
WAITROSE        A3
ASDA            A4
WAITROSE        A3
ASDA            A3
ASDA            A3
ASDA            A4
SAINSBURY       A2
SAINSBURY       A2
SAINSBURY       A6
TESCO           A6
ASDA            A3
TESCO           A3
TESCO           A3
SAINSBURY       A3
WAITROSE        A5
WAITROSE        A5
WAITROSE        A5
WAITROSE        A4
ALDI            A1
ALDI            A1
ALDI            A1
ALDI            A1
ALDI            A1
ALDI            A1
ALDI            A1
ALDI            A1

我想要做的是显示一个供应商列表,这些供应商至少有 4 家与之关联的独特商店。

到目前为止,这就是我所结合的:

SELECT 
    distinct stoc.supplier_code as SUPPLIER_CODE    
FROM 
        MYTABLE stoc
WHERE
    (select count(distinct a.store_code) from mytable a where a.supplier_code = stoc.supplier_code) >= 4
;

有没有办法优化我的选择语句? where 子句看起来很乱,我想知道是否可以通过使用 GROUP BY 或 HAVING 来改进它?

非常感谢

【问题讨论】:

    标签: sql oracle select oracle10g


    【解决方案1】:

    试试这个:

    SELECT COUNT(DISTINCT store_code), supplier_code
    FROM myTable
    GROUP BY supplier_code
    HAVING COUNT(DISTINCT store_code) >= 4
    ORDER BY 2
    

    【讨论】:

      猜你喜欢
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多