<p>ユーザー ID、都市、予約日を含むテーブルがあります。日付範囲内で複数の都市ではなく、1 つの都市のみを訪問したユーザーを見つける必要があります。 </p>
<pre class="brush:php;toolbar:false;">SELECT
ユーザーID、
市、
結果として COUNT(*)
訪問から
WHERE start_ts >= 1675209600 -- 1675209600 = 01.02.2023 00:00
AND end_ts <= 1676419200 -- 1676419200 = 2023 年 2 月 15 日 00:00
GROUP BY user_id、city</pre>
<テーブルクラス="s-テーブル">
<頭>
<tr>
<th>user_id</th>
都市 |
<th>結果</th>
</tr>
</頭>
<みんな>
<tr>
10 |
<td>ミュンヘン</td>
1 |
</tr>
<tr>
11 |
<td>バルセロナ</td>
2 |
</tr>
<tr>
11 |
<td>ベルリン</td>
1 |
</tr>
<tr>
12 |
<td>バルセロナ</td>
1 |
</tr>
<tr>
<td>13</td>
<td>プラハ</td>
2 |
</tr>
<tr>
11 |
<td>バルセロナ</td>
1 |
</tr>
<tr>
<td>13</td>
<td>ベルリン</td>
1 |
</tr>
</tbody>
</テーブル>
<p>ユーザー ID 10 と 12 は 1 つの都市のみを訪問しました。たとえば、ユーザー ID 11 はバルセロナを 2 回訪問しました。 </p><p>NOT EXISTING と INNER JOIN を使用してみました。 1 つの都市のみを訪問したユーザーを獲得するにはどうすればよいでしょうか? </p>
HAVING 条件をクエリに追加してください:
リーリー一意の都市の数のみをカウントする必要がある場合は、COUNT(DISTINCT(city)) を使用して、次のようにグループから都市を削除できます。 リーリー