sql 查询数量(count(*) >n)【count,having】

需求:

查询某字段值相同的数据,且条数大于n 


SELECT COUNT(*) AS a FROM TABLE  GROUP BY 某个字段  HAVING COUNT(*)>n


不久前有用过该条sql,一段时间不用,便忘了使用 having,特记录下。


### 使用 `HAVING COUNT(*) > 1` 的 SQL 查询SQL 中,`HAVING` 子句用于过滤由聚合函数计算的结果集。当需要筛选分组后的记录数量大于特定值时,可以使用 `COUNT()` 函数配合 `HAVING` 来实现这一需求。 对于查找重复项的情况,通常会结合 `GROUP BY` 和 `HAVING COUNT(*) > 1` 进行操作。这有助于识别那些具有相同属性组合的多条记录[^1]。 #### 示例:找出有多个订单的城市 假设有一个名为 `orders` 的表,其中包含字段 `order_id`, `customer_name`, 和 `city`。为了找到至少有两个不同客户下单的城市,可执行如下查询: ```sql SELECT city, COUNT(DISTINCT customer_name) AS num_customers FROM orders GROUP BY city HAVING COUNT(DISTINCT customer_name) > 1; ``` 此语句首先按城市分组 (`GROUP BY`) 并统计每座城市的唯一顾客数;接着通过 `HAVING` 设置条件只保留拥有两个以上客户的那些城市[^2]。 #### 另一实例:检测学生表中的重复姓名 如果有一张存储学生成绩的数据表 `students_scores`,内含列 `student_id`, `name`, `score` 等信息,则可以通过下述方式来定位存在同名学生的班级: ```sql SELECT class_id, name, COUNT(*) FROM students_scores WHERE score >= 60 -- 假设我们关心的是及格线以上的成绩 GROUP BY class_id, name HAVING COUNT(*) > 1; ``` 这段代码旨在获取每个班次里名字出现次数超过一次的学生名单及其对应的频次。注意这里不仅限于简单的计数,还可以加入其他限定条件如分数范围等进一步细化检索结果[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值