Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何按每个日期的金额筛选记录?_Sql_Database_Postgresql - Fatal编程技术网

Sql 如何按每个日期的金额筛选记录?

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

我有一个平板电脑“a”,上面有一列日期。同一日期可以出现在一些记录中。我正在尝试筛选每天记录量小于5的记录。并且仍然保留平板电脑的所有字段


我的意思是,如果我在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谢谢你展示了另一种方式。好未来,如果这个答案满足你的需要,请将其标记为接受。这将帮助未来有类似问题的人知道这个问题已经解决了,这将提高你自己的声誉分数。如果你有其他你从未接受过的,我鼓励你回去看看。