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

技术问询:如何筛选购买过指定列表所有音乐流派的客户?

如何找到购买过所有流派音乐的客户?

你当前的SQL语句只是列出了客户及其购买过的音乐流派,但并没有筛选出购买过所有流派的客户。要实现需求,可以通过统计每个客户购买的独特流派数量,并与系统中总流派数量对比来完成,具体如下:

实现思路

  1. 计算系统中所有流派的总数量
  2. 分组统计每个客户购买过的独特流派数量
  3. 筛选出购买流派数量等于总流派数量的客户

完整SQL代码

WITH total_genres AS (
    -- 统计系统中所有流派的总数
    SELECT COUNT(DISTINCT genre_id) AS total FROM genre
),
customer_purchased_genres AS (
    -- 统计每个客户购买过的独特流派数量
    SELECT 
        customer.customer_id,
        CONCAT(customer.first_name, ' ', customer.last_name) AS customer_name,
        COUNT(DISTINCT genre.genre_id) AS purchased_count
    FROM customer
    JOIN invoice ON customer.customer_id = invoice.customer_id
    JOIN invoice_line ON invoice.invoice_id = invoice_line.invoice_id
    JOIN track ON invoice_line.track_id = track.track_id
    JOIN genre ON track.genre_id = genre.genre_id
    GROUP BY customer.customer_id, customer_name
)
-- 筛选出购买过所有流派的客户
SELECT customer_name
FROM customer_purchased_genres, total_genres
WHERE purchased_count = total_genres.total;

代码说明

  • total_genres 公共表表达式(CTE):先算出系统里一共有多少种不同的音乐流派
  • customer_purchased_genres CTE:通过关联各表,按客户分组统计每个客户实际购买过的独特流派数量
  • 最后将两个结果关联,只保留购买流派数等于总流派数的客户,这些就是购买过所有流派音乐的客户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:33:14