私は、各URLの訪問を追跡するPHPとMYSQLを使用したURL短縮プロジェクトに取り組んでいます。主にこれらのプロパティで構成される訪問用のテーブルを提供しました:
time_in_second | country | referrer | os | browser | device | url_id
#####################################################################
1348128639 | US | direct | win | chrome | mobile | 3404
1348128654 | US | google | linux | chrome | desktop| 3404
1348124567 | UK | twitter| mac | mozila | desktop| 3404
1348127653 | IND | direct | win | IE | desktop| 3465
次に、このテーブルに対してクエリを実行します。たとえば、。を使用してURLの訪問データを取得したいとしurl_id=3404
ます。統計を提供してグラフを描画する必要があるため、このURLには次のデータが必要です。
- このURLの各種類のOSの数。たとえば、20 Windows、15 linux、..。
- 希望する各期間の訪問数、たとえば過去24時間の10分ごと
- 各国の訪問数
- ..。
ご覧のとおり、国などの一部のデータは、さまざまな値を受け入れる場合があります。
私が想像できる良いアイデアの1つは、各列の一意の値の数を出力するクエリを作成することです。たとえば、上記のデータの国の場合、、の列、の列、およびの列にnum_US
1つずつ出力します。 num_UK
num_IND
ここで問題となるのは、SQL(MYSQL)でこのような高性能クエリを実装する方法です。
また、これがパフォーマンスの効率的なクエリではないと思う場合、あなたの提案は何ですか?
どんな助けでも深く感謝されます。
更新:この質問を見てください:SQL; 各列で指定された値のみをカウントします。この質問は私のものと似ていると思いますが、違いはcountry property
各列で可能な値の多様性にあり(多くの値が可能であるため)、クエリがより複雑になります。