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 アイテムの平均ピクセル数を生成するようにクエリを変更するにはどうすればよいですか? (各州のすべてのアイテムの平均ピクセルの代わりに)

たとえば、状態 101 の平均は (2+10+100)/3 = 37.33 になるはずです。つまり、テニス 1 個、サッカー 1 個、クリスタル 1 個の平均 px です。

08-04-12 編集 >>> 2 番目の表の px 列ヘッダーを avg px に変更しました。/明確にするために編集されています。どうも。

4

1 に答える 1

0

これを試してみてください。

編集:アイテムと状態に基づいて、distinct に内部クエリを追加しました。

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 に答える