Sql 如何按每个日期的金额筛选记录?
我有一个平板电脑“a”,上面有一列日期。同一日期可以出现在一些记录中。我正在尝试筛选每天记录量小于5的记录。并且仍然保留平板电脑的所有字段Sql 如何按每个日期的金额筛选记录?,sql,database,postgresql,Sql,Database,Postgresql,我有一个平板电脑“a”,上面有一列日期。同一日期可以出现在一些记录中。我正在尝试筛选每天记录量小于5的记录。并且仍然保留平板电脑的所有字段 我的意思是,如果我在2017年11月10日只有4条记录,我需要过滤所有这4条记录。因此您可以根据子查询选择它们。在子查询中,按此日期列对它们进行分组,然后使用have和aggregated count来了解每个日期组中有多少个,然后选择此计数小于5的所有日期组 SELECT * FROM A WHERE A.date in (SELECT subA.dat
我的意思是,如果我在2017年11月10日只有4条记录,我需要过滤所有这4条记录。因此您可以根据子查询选择它们。在子查询中,按此日期列对它们进行分组,然后使用have和aggregated count来了解每个日期组中有多少个,然后选择此计数小于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谢谢你展示了另一种方式。好未来,如果这个答案满足你的需要,请将其标记为接受。这将帮助未来有类似问题的人知道这个问题已经解决了,这将提高你自己的声誉分数。如果你有其他你从未接受过的,我鼓励你回去看看。