私は、日付の列を持つタブレット 'A'を持っています。同じ日付はいくつかのレコードに入れることができます。私は1日のレコードの量が5未満のレコードをフィルタリングしようとしています。そして、まだタブレットのすべてのフィールドを保持します。日付ごとにレコードをフィルタリングする方法は?
私は、11/10/2017に4つのレコードしかない場合は、この4つのレコードすべてをフィルタリングする必要があることを意味します。
私は、日付の列を持つタブレット 'A'を持っています。同じ日付はいくつかのレコードに入れることができます。私は1日のレコードの量が5未満のレコードをフィルタリングしようとしています。そして、まだタブレットのすべてのフィールドを保持します。日付ごとにレコードをフィルタリングする方法は?
私は、11/10/2017に4つのレコードしかない場合は、この4つのレコードすべてをフィルタリングする必要があることを意味します。
だから、サブクエリでそれらを選択することができます。 SUB-Queryでは、この日付の列でグループ化し、集計されたHAVINGを使用して、すべての日付グループの数を確認し、この数が5未満のすべてを選択します。
SELECT *
FROM A
WHERE A.date in (SELECT subA.date
FROM A
GROUP BY A.date
HAVING COUNT(*) < 5);
テイクケアの答えは良いです。また、アナリティック/ウィンドウ関数を使用することもできます。私は両方をベンチマークして、どちらがうまくいくかを見ます。
with cte as (
select *, count(1) over (partition by date) as cnt
from table_a
)
select *
from cte
where cnt < 5
あなたの答えはまた非常に明確です:P別の方法を示してくれてありがとう。 –
ありがとうございました!それは私のために働く –
Tal、この答えがあなたの必要を満たしているなら、それを合格とマークしてください。それは、これと同様の問題を抱える将来の人々がこの問題を解決したことを知って、あなた自身の評判スコアを向上させるでしょう。あなたが決して受け入れたことのない他の人がいるなら、私はあなたに戻ってそれらを見ることをお勧めします。 – Hambone