sql - 使用 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
这只给了我他们子类别的平均组。所以我在下一步将每个值与其分类平均值进行比较时遇到问题。谢谢!
解决方案
您可以再次加入同一个表,然后过滤掉必要的行:
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;
推荐阅读
- url - 如何计算破折号媒体片段名称的 $Time$ 变量?
- flutter - Json.Encode() 不识别对象,将它们设置为字符串 FLUTTER
- elasticsearch - Elasticsearch:按最多的应该匹配进行排名
- java - 将重复项转换为字符串中的不同字母
- java - 是否可以在左侧和右侧创建一个带有类的面板?
- sktime - 时间
不支持 - powershell - 如何使用 PowerShell 将敏感度标签应用于存储在 SharePoint Online 或 OneDrive 中的文件?
- javascript - 使函数 CRUD DeletebyID(id) Javascript 按其 id 数而不是按索引
- arm - 在 arm DDT 中提交作业
- javascript - 为什么 JavaScript 属性访问器允许使用包含单个属性名称的任意嵌套数组?