首页 > 解决方案 > 使用 sql 选择大于其子类别平均值的值

问题描述

例如,我有一个像这样的表 T:

sales | sub_category | name

10      A             phone
3       A             earphone
54      B             chair
23      C             popcorn
1       D             paper_clip
5       E             Diet_coke

我想找到高于其 sub_category 的销售额。在这种情况下,它将是第一个。我试过了

SELECT AVG(sales), sub_category
FROM T
GROUP BY sub_category

这只给了我他们子类别的平均组。所以我在下一步将每个值与其分类平均值进行比较时遇到问题。谢谢!

标签: sql

解决方案


您可以再次加入同一个表,然后过滤掉必要的行:

SELECT t.sales,t.sub_category,t.name,x.avg_sales
FROM t
INNER JOIN (
    SELECT AVG(sales) AS avg_sales, sub_category
    FROM t
    GROUP BY sub_category
) x USING (sub_category)
WHERE t.sales > x.avg_sales;

推荐阅读