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

如何在Python中用SQL子查询将过滤结果传入分组查询

问题解决:找出拥有至少2家店铺的店主所在的前2热门城市

现有businesses表,需求是编写单个SQL查询,找出拥有至少2家店铺的店主所在的前2热门城市(预期结果为London和Leicester)。目前已能分别实现查询前2热门城市的分组查询、查询拥有至少2家店铺店主的过滤查询,但不知如何合并为一个SQL查询。

合并后的SQL查询

SELECT b.city, COUNT(DISTINCT b.owner) AS qualified_owner_count
FROM businesses b
JOIN (
    -- 筛选出拥有至少2家店铺的店主
    SELECT owner
    FROM businesses
    GROUP BY owner
    HAVING COUNT(*) >= 2
) qualified_owners ON b.owner = qualified_owners.owner
GROUP BY b.city
ORDER BY qualified_owner_count DESC
LIMIT 2;

思路说明

  • 子查询qualified_owners先筛选出满足"拥有至少2家店铺"的店主清单
  • 将原表与该子查询结果关联,仅保留这些店主对应的店铺数据
  • 按城市分组,用COUNT(DISTINCT owner)统计每个城市里符合条件的店主数量(避免同一店主在同一城市被重复计数)
  • 按统计结果降序排列,取前2个城市,即为目标结果

数据库创建代码

# import libraries
import pandas as pd
import sqlite3

# create database
conn = sqlite3.connect("my_db.db")

# create table
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS businesses;")
query = """
CREATE TABLE IF NOT EXISTS businesses (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL,
    city TEXT NOT NULL,
    owner TEXT NOT NULL
    )
"""
cur.execute(query)
conn.commit()

# add rows to table
query = """
INSERT INTO businesses
    (id, name, city, owner)
VALUES
    (1, "Shop A", "London", "Tom"),
    (2, "Shop B", "London", "Tom"),
    (3, "Shop C", "London", "Tom"),
    (4, "Shop D", "Luton", "Alice"),
    (5, "Shop E", "Leeds", "Jenny"),
    (6, "Shop F", "Leicester", "James"),
    (7, "Shop G", "Leicester", "James"),
    (8, "Shop H", "Leicester", "Emma"),
    (9, "Shop I", "Leicester", "Emma"),
    (10, "Shop J", "Liverpool", "James"),
    (11, "Shop K", "Liverpool", "James"),
    (12, "Shop L", "Liverpool", "George"),
    (13, "Shop M", "Shefield", "Mary"),
    (14, "Shop N", "Shefield", "Mary"),
    (15, "Shop O", "Cambridge", "Oliver"),
    (16, "Shop P", "Manchester", "Harry")
"""
cur.execute(query)
conn.commit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:18:21