2012-08-03 68 views
0

表平均鲜明的项目>>>销售MySQL查询到A组中

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 

问:如何查询进行修改,以产生平均PX DISTINCT项目在每个州? (代替在每个状态的所有项目的平均PX的)

例如,平均为状态101应当/将是(2 + 10 + 100)/ 3 = 37.33;即1个网球,1个足球和1个结晶的平均px。

08-04-12编辑>>>将第二个表中的px列标题更改为avg px。 /为了清晰起见编辑。谢谢。

回答

0

试试看。

编辑:添加一个内部查询不同基于项目和状态。

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; 
+0

谢谢。你的逻辑直接导向我寻求的解决方案。我也学到了一些关于表别名的问题:)非常感谢。 – user1575233 2012-08-04 19:40:39