繁体   English   中英

MySQL查询以平均一组中的不同项目

[英]MySQL Query to Average Distinct Items in a Group

表>>>销售

state | date | item | px

101   1/1/2012   tennis   2
101   1/1/2012   soccer   10
101   1/1/2012   crystal  100
101   1/1/2012   soccer   10

102   1/1/2012   crystal  100
102   1/1/2012   tennis   2
102   1/2/2012   tennis   2

103   1/2/2012   tennis   2
103   1/2/2012   crystal  100
103   1/3/2012   soccer   10
103   1/3/2012   crystal  100


$query="SELECT state, MAX(date), COUNT(state), AVG(px) FROM sales GROUP BY state ORDER by state ASC";

...产生:

state | date | item count | avg px

101   1/1/2012   4   30.5
102   1/2/2012   3   34.67
103   1/3/2012   4   53

问题:如何修改查询以产生每种状态下DISTINCT项目的平均px? (而不是每个州所有项目的平均px)

例如,状态101的平均值应该/将为(2 + 10 + 100)/ 3 = 37.33; 即1网球,1足球和1水晶的平均像素。

12年8月4日编辑>>>将第二个表中的px列标题更改为avg px。 /为清楚起见进行了编辑。 谢谢。

试试看。

编辑:添加了一个内部查询,以根据项目和状态来区分。

SELECT
    state,
    CONVERT(DATETIME, AVG(AverageDate)) AS AverageDate,
    SUM(ItemCount) AS [item count],
    AVG(px) AS px
FROM
(
    SELECT
        state,
        item,
        COUNT(*) AS ItemCount,
        AVG(CAST(date AS INT)) AS AverageDate,
        AVG(px) AS px
    FROM sales
    GROUP BY
        state,
        item
)
GROUP BY state;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM