【问题标题】:MySQL Query - SELECT (average of a category) AS "CATEGORY AVERAGE"MySQL 查询 - 选择(类别的平均值)作为“类别平均”
【发布时间】:2011-03-21 09:08:35
【问题描述】:

目标:当用户浏览到特定卖家时,将他的平均值与同类卖家的平均值一起显示,以便于比较。

示例数据:

卖家 |类别 |数量 |销售量
------------------------------------------
哈利 |芒果 | 100 | 50000
约翰 |苹果 | 75 | 50500
最大 |芒果 | 44 | 20000
灰 |芒果 | 60 | 35000
行话 |苹果 | 88 | 60000

必需的输出: (当用户浏览到 Ash)
Ash 销售数量:60
其他芒果卖家的平均销量:68 (平均 100、44 和 60)

灰的平均价格:583.33 (35000 / 60)
其他芒果卖家的平均价格:514.70 (加权平均价格)

骨架代码:

选择“数量”作为“数量”,
(某些代码)作为“平均数量”,
(“销售”/“数量”)作为“价格”,
(某些代码)作为“平均价格”
来自“销售表”
WHERE '卖家' = 'Ash'

【问题讨论】:

    标签: sql mysql aggregate-functions


    【解决方案1】:
    SELECT
        sellers.Qty,
        ROUND(AVG(s.Qty), 0) AS TotalQty,
        ROUND(( sellers.Sales / sellers.Qty ), 2) AS AvgPrice,
        ROUND(( AVG(s.Sales) / AVG(s.Qty) ),2) AS TotalAvgPrice
    FROM
        sellers 
    LEFT JOIN sellers AS s On sellers.Category = s.Category
    WHERE
        sellers.Seller = "Ash"
    

    【讨论】:

      【解决方案2】:

      用途:

      SELECT yt.qty,
             x.cat_avg,
             yt.sales/yt.qty AS avg_price,
             NULL AS weighted_average 
        FROM YOUR_TABLE yt
        JOIN (SELECT t.category,
                     AVG(t.qty) AS cat_avg
                FROM YOUR_TABLE t
            GROUP BY t.category) x ON x.category = yt.category
       WHERE yt.seller = 'Ash'
      

      如果可能,我会在您提供方程式时填写加权平均值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-04
        • 2016-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多