0

質問について...同じ日付の場合は列を選択してください...この回答を受け取りました

SELECT a.*
FROM LicenseHistory a
JOIN (  SELECT LicenseID, date as date, COUNT(DISTINCT IPAddress,LicenseID)
    FROM LicenseHistory 
    WHERE (LicenseID= 24965)
    GROUP BY LicenseID,Date
    /*HAVING COUNT(DISTINCT IPAddress) > 1*/
     )b
ON a.LicenseID = b.LicenseID
AND a.date = b.date
order by date desc, LicenseID desc

これらの結果を返したのは...

Date            UniqueID      Users       IPAddress      Country      Count
2013-05-14         24965       15         70.60.96.98      US          1455
2013-05-14         24965       15         72.252.247.148   US           111
2013-03-29         24965       15         184.39.241.223   US            14

次のような単純な選択であるため、カウントは大幅に間違っています...

SELECT COUNT(Distinct IPAddress) AS DistinctIPCount
FROM LicenseHistory WHERE (LicenseID=24965)

この SQL で実行する必要があるのは、その IP アドレスからその日にその ID が出現した回数をカウントすることです。つまり、「IP 70.60.96.98 を使用して 2013-05-14 に 24965 が表示された回数

4

1 に答える 1

0

特定の ID、日付、および IP の行数をカウントする場合、内部クエリにエラーがあり、この列はすべて GROUP BY ステートメントに含まれている必要があります。このクエリを試してください:

SELECT *
FROM LicenseHistory a
JOIN (  SELECT LicenseID, date as date, IPAddress, COUNT(*)
    FROM LicenseHistory 
    WHERE (LicenseID= 24965)
    GROUP BY LicenseID,Date,IPAddress
     )b
ON a.LicenseID = b.LicenseID
AND a.date = b.date
order by date desc, LicenseID desc
于 2013-06-04T08:02:43.007 に答える