1

次のようなデータベースがあります: (日付は でフォーマットされますstrtotime)

ID  Date            
1   1338366170000
2   1337761370000
3   1337761370000
4   1337761370000
5   1337156570000
6   1331713370000
7   1331713370000

ご覧のとおり、いくつかのエントリは同じ日付のものです。ここで、各日付とその発生頻度を取得したいと思います。

したがって、最終結果は次のようになります。

Date: 1338366170000
Count: 1

Date: 1337761370000
Count: 3

Date: 1337156570000
Count: 1 

Date: 1331713370000
Count: 2 

私は現在、すべての日付を取得し、各日付をカウントするためにこれを行っています:

まず、すべての行を取得します。

$stats      = $sql->query("SELECT * FROM stats_clicks");

ここで、同じ日付のエントリをカウントしようとすると問題が発生すると思います。すべての結果をループし、各日付を検索してカウントします。

foreach($sql->get() as $result){

    //Sum clicks for each date
    $date   = $result["date"];

    $stats  = $sql->query("SELECT * FROM stats_clicks WHERE date = '$date'");
    $count  = count($sql->get());

    echo "Date: $date<br>Count: $count<br><br>";

}

出力は次のとおりです。

Date: 1338366170000
Count: 1

Date: 1337761370000
Count: 3

Date: 1337761370000
Count: 3

Date: 1337761370000
Count: 3

Date: 1337156570000
Count: 1 

Date: 1331713370000
Count: 2 

Date: 1331713370000
Count: 2 

各日付を複数回出力しないようにするにはどうすればよいですか?代わりに、正しいカウントで各日付を 1 回だけ出力しますか?

4

2 に答える 2

4
SELECT `Date`, COUNT(`Date`) as `Count`
FROM stats_clicks
GROUP BY `Date`

結果

Date    Count
1331713370000   2
1337156570000   1
1337761370000   3
1338366170000   1
于 2012-05-30T09:08:25.377 に答える
0

このクエリを実行します。繰り返しなしでcorectカウントを取得します。SELECT date、count(*)FROM stats_clicks GROUP BY date;

于 2012-05-30T09:24:19.473 に答える