1

行が複数回存在する場合でも、指定された行に対して1回だけカウントするにはどうすればよいですか?

たとえば、SQLクエリがあります

SELECT COUNT(Date) 
FROM mytable 
WHERE name like '%John%'

しかし、それはすべてのジョンの数を数えます。必要なのは、名前を見つけたら、Johnジョンの名前が複数回存在しても、1回だけ数えたいということです。

説明する

Name       Date
John       06-09-2012 1am
Robert     06-09-2012 2am
John       06-09-2012 3am 
John       06-09-2012 4am
Robert     06-09-2012 5am

ジョンの結果は1になるはずです。

4

2 に答える 2

1

次のような句COUNT Distinct Dateを使用する必要があります。また、使用する必要があります。GROUP BY

SELECT Name,COUNT(DISTINCT CONVERT(varchar,date,103)) AS NameCount
FROM mytable WHERE name LIKE '%John%'
GROUP BY name

については、このフィドルを参照してname LIKE '%John%'ください。

また、ユーザーごとにこれを試してください。

SELECT Name,COUNT(DISTINCT CONVERT(varchar,date,103)) AS NameCount
FROM mytable GROUP BY name

ユーザーごとにこのフィドルを参照してください。

于 2012-08-09T06:26:56.077 に答える
-1

明確な要件に従ってクエリを更新する

オラクルの場合

SELECT count(distinct(extract day from date))FROM mytable WHERE name like'%John%' and Date is not null;

于 2012-08-09T06:20:20.800 に答える