0

表 >>> 销售额

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。/ 为清楚起见进行了编辑。谢谢。

4

1 回答 1

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;
于 2012-08-03T22:41:39.633 回答