Sql 这个简单的选择可以通过使用GROUP BY或Have来改进吗?
我有以下参考数据Sql 这个简单的选择可以通过使用GROUP BY或Have来改进吗?,sql,oracle,select,oracle10g,Sql,Oracle,Select,Oracle10g,我有以下参考数据 STORE_CODE SUPPLIER_CODE ------ ------ ASDA A3 ASDA A2 TESCO A2 TESCO A4 ASDA A4 ASDA A4 ASDA A4 ASDA A4 WAITROSE A3 ASDA A
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
;
是否仍有优化我的select语句的方法?where子句看起来相当混乱,我想知道是否可以通过使用groupby
或have
来改进它
非常感谢试试这个:
SELECT COUNT(DISTINCT store_code), supplier_code
FROM myTable
GROUP BY supplier_code
HAVING COUNT(DISTINCT store_code) >= 4
ORDER BY 2