You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于details表的SQL查询需求:打印指定studid及统计目标学生总数

问题解答

表结构说明

给定的学生信息表结构如下:

details(
    studid int primary key, 
    fname varchar(20) not null, 
    lname varchar(20) not null, 
    DOB date not null, 
    city varchar(20)
);

需求1:输出学生数量大于3的城市中所有学生的studid

提供两种实现方式:

方法1:子查询关联

先统计各城市的学生数量,筛选出学生数超3的城市,再关联原表获取对应学生ID:

SELECT d.studid
FROM details d
JOIN (
    SELECT city
    FROM details
    GROUP BY city
    HAVING COUNT(studid) > 3
) c ON d.city = c.city;

方法2:窗口函数

通过窗口函数直接计算每个城市的学生总数,再筛选符合条件的记录:

SELECT studid
FROM (
    SELECT 
        studid,
        COUNT(studid) OVER (PARTITION BY city) AS city_student_count
    FROM details
) t
WHERE city_student_count > 3;

需求2:统计居住过3个及以上不同城市的学生总数

注:若studid为唯一主键(每个学生仅一条记录),当前表结构无法满足此需求——每个学生仅对应一个城市。以下按学生存在多条居住历史记录的常规场景实现:

通过分组学生ID,统计其关联的不同城市数量,再筛选出符合条件的学生并统计总数:

SELECT COUNT(DISTINCT studid) AS student_total
FROM (
    SELECT studid
    FROM details
    GROUP BY studid
    HAVING COUNT(DISTINCT city) >= 3
) t;

内容的提问来源于stack exchange,提问作者Onkar Shinde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:05:21