【发布时间】:2020-06-13 18:28:17
【问题描述】:
我在 postgres 中有一个包含聚合数据的表,这些表具有以下字段
search_term --> 一个特定的搜索词
日期 --> 执行搜索的日期
search_count --> 使用此搜索词执行了多少次搜索
min_result_count --> 搜索词返回的最小结果数是多少
max_results_count --> 搜索词返回的最大结果数是多少
last_result_count --> 上次搜索时返回的搜索结果数
zero_result_count --> 这个搜索词有多少次没有结果
其中 date 和 search_term 组合是唯一的,这意味着搜索词不会在日期重复,而是会更新值。
我正在尝试编写一个为期 7 天的 sql 查询以获取以下记录
搜索词
min_result_count
最大结果计数
zero_result_count
last_result_count
我可以使用聚合 MIN、MAX、SUM 找到所有值,但我无法找到 last_result_count 的值,因为这需要我只获取最后一个值。
这是一张具有预期结果的同一张表
search_term search_count min_rc max_rc zero_count last_rc 日期 -------------------------------------------------- ------------------------------------- 学期1 10 10 20 0 4 01-01-2020 学期1 10 11 21 0 5 02-01-2020 学期1 10 12 22 0 6 03-01-2020 学期1 10 13 23 0 7 04-01-2020 学期1 10 14 24 0 8 05-01-2020 学期2 10 24 25 0 9 01-01-2020 学期2 10 23 26 0 10 02-01-2020 学期2 10 22 27 0 11 03-01-2020 学期2 10 21 28 0 12 04-01-2020 学期2 10 0 29 3 0 04-01-2020如果我在 05-01-2020 运行查询,我应该得到
search_term search_count min_rc max_rc zero_count last_rc -------------------------------------------------- ---------------------- 期限1 50 10 24 0 8 学期2 50 0 29 3 0如果我在 04-01-2020 运行查询,我应该得到
search_term search_count min_rc max_rc zero_count last_rc -------------------------------------------------- ---------------------- 学期1 40 10 23 0 7 学期2 40 21 28 0 12如果我在 03-01-2020 运行查询,我应该得到
search_term search_count min_rc max_rc zero_count last_rc -------------------------------------------------- ---------------------- 学期1 30 10 23 0 6 学期2 30 22 27 0 11- rc 代表 result_count
等等,任何帮助推导出 last_result_count 都会很有帮助
【问题讨论】:
-
我不太确定您是如何获取 lat_count 列的,但 SQL 分析函数 LAG 应该可以解决问题。
-
我每天都从另一个系统接收数据,它会根据搜索词为我提供每天的汇总结果
标签: sql postgresql window-functions