0

アプリケーションで統計を実行したいのですが、これはテーブルPointの列です。Point

id   type   city
1    food   NewYork
2    food   Washington
3    sport  NewYork
4    food   .....

各ポイントは特定のタイプに属し、特定の都市にあります。

次に、タイプごとに異なる都市のポイント数を計算します。

たとえば、ここには2つのタイプがあります:foodsport

それから私は知りたいです:

how many points of `food` and `sport` at NewYork
how many points of `food` and `sport` at Washington
how many points of `food` and `sport` at Chicago
......

私はこれを試しました:

select type,count(*) as num from point group by type ;

ただし、都市ごとにグループ化することはできません。

どうやって作るの?

アップデート

id      type        city
1       food        NewYork
2       sport       NewYork
3       food        Chicago
4       food        San

そして、私はこのようなものを手に入れたいです:

        NewYork     Chicago     San
food    2           1           1
sport   1           0           0

これらのデータを表示するには、htmlテーブルとチャートを使用します。

だから私はカウントをする必要があります、私はこのようなものを使うことができます:

select count(*) from point where type='food' and city ='San'
select count(*) from point where type='food' and city ='NewYork'
....

ただし、これは悪い考えだと思うので、SQLを使用してカウントを実行できるかどうか疑問に思います。

ところで、これらのテーブルデータの場合、人々はjsonを使用して構造をどのように編成しますか?

4

2 に答える 2

1

これはあなたが望むものです:

    SELECT city, 
     COUNT(CASE WHEN [type] = 'food' THEN 1 END) AS FoodCount,
     COUNT(CASE WHEN [type] = 'sport' THEN 1 END) AS SportCount
    FROM point
    GROUP BY city
于 2012-10-16T08:55:44.630 に答える
0

アップデート:

集計された行/列形式で結果を取得するには、ピボットテーブルを使用する必要があります。Accessでは、クロス集計クエリと呼ばれます。クロス集計クエリウィザードを使用して、優れたUIを介してクエリを生成するか、SQLに直接カットすることができます。

TRANSFORM COUNT(id) AS CountOfId
   SELECT type
     FROM point
 GROUP BY type
    PIVOT city

グループ化は、各のIDの数をカウントするために使用されますtype。追加のPIVOT句は、データをcityグループ化し、各グループ化を個別の列に表示します。最終結果は次のようになります。

        NewYork     Chicago     San
food    2           1           1
sport   1           0           0
于 2012-10-16T08:47:39.357 に答える