[英]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.