首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >根据最大日期过滤的Having子句

根据最大日期过滤的Having子句
EN

Stack Overflow用户
提问于 2013-01-11 15:23:33
回答 3查看 6.4K关注 0票数 0

我正在尝试从一个'review‘表中获取一个区域的最大日期,并且只返回那些最大date_finished大于一年(从今天的日期开始)的area_id _id。表结构如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1) the 'review' table can have one or more reviews (multiple date_finished) for
each area_id
2) each region_id can have one or more area_ids

目标:返回date_finished大于一年的每个region_id的评论次数

示例数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
region_id   area_id   date_finished
abc         area_3    '01-01-2010 12:00:00 AM'
abc         area_3    '06-01-2009 12:00:00 AM'
abc         area_3    '02-01-2008 12:00:00 AM'

上面的预期结果应该是返回区域abc,计数应该是1 (因为最大date_finished是2010年1月1日,并且比今天日期(2013)晚一年)

我的sql如下所示。由于某种原因,它返回我上面描述的所有日期。它返回3个日期,而不是返回最大日期。我使用的是SQL Server 2008。谢谢!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select count(*) 
from review group by area_id 
having datediff(day,max(date_finished), getdate()) > 365
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-11 15:47:49

我认为你可以通过两个级别的聚合得到你想要的东西,第一个级别是地域和面积,第二个级别是地域:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select r.region_id, count(*) as NumAreas, SUM(cnt) as NumReviews
from (select r.region_id, r.area_id, count(*) as cnt,
             MAX(date_finished)as maxDF
      from review r
      group by r.region_id, r.area_id
     )  r
where DATEDIFF(day, maxDF, getdate()) > 365
group by r.region_id
票数 0
EN

Stack Overflow用户

发布于 2013-01-11 15:42:05

您可以只使用WHERE子句,而不使用

票数 0
EN

Stack Overflow用户

发布于 2013-01-11 15:42:40

你的问题对我来说没有多大意义。您需要满足特定条件的最大日期的计数。该逻辑将解析为布尔值。因为符合条件的日期要么存在,要么不存在。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
;WITH CTE (region_id,   area_id,   date_finished) AS
( 
    SELECT 'abc',         'area_3',    CAST('2010-1-1' AS DATETIME) UNION ALL
    SELECT 'abc',         'area_3',    '2009-3-1'   UNION ALL
    SELECT 'abc',         'area_3',    '2008-6-1'
)
SELECT   region_id
        ,HasQualifyingVal   =  CASE  WHEN COUNT(*) > 0 THEN 1 ELSE 0 END
FROM CTE
WHERE date_finished < DATEADD(YEAR, 1, date_finished)
GROUP BY region_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14281224

复制
相关文章
MySQL HAVING 子句
上一章阿常给大家讲了MySQL 分组函数,今天我们讲 MySQL HAVING 子句。
程序媛淼淼
2022/09/01
7230
MySQL HAVING 子句
SQLite Having 子句
WHERE 子句在所选列上设置条件,而 HAVING 子句则在由 GROUP BY 子句创建的分组上设置条件。
子润先生
2021/07/01
4730
[译]PostgreSQL HAVING子句
了解GROUP BY和HAVING子句的工作原理可以帮助写出更加高效的SQL。这里用一个真实例子来说明这一点。
yzsDBA
2022/09/06
9110
MySQL | Having子句的使用
数据操作语言:HAVING 子句 分组查询遇到的困难? 查询部门平均底薪超过2000元的部门编号 错误示范 SELECT deptno FROM t_emp WHERE AVG(sal) >=2000 -- 错在这里出现了聚合函数 GROUP BY deptno; 引入 HAVING 子句 SELECT deptno FROM t_emp GROUP BY deptno HAVING AVG(sal)>=2000; HAVING 子句的用途 查询每个部门中,1982 年以后入职的员工超过 2 个人的部门编
Zkeq
2022/05/18
9100
SQL中,having子句和where子句的区别
在SQL之中,where和having的功能有点像,导致我一直搞不清楚这两者的区别。因此今天专门研究了以下,在此记录。
灯珑LoGin
2022/10/31
2.6K0
SQL进阶-11-having子句
HAVING子句是SQL中非常重要的功能,本文将再次介绍该子句的使用。作者指出:SQL语句处理的对象是集合而不是记录,我们要有面向集合的思考方式。
皮大大
2021/03/01
7020
SQL学习之HAVING过滤分组
1、SQL除了能用Group By分组数据之外,SQL还允许过滤分组,规定包括那些分组,排除那些分组。例如,你可能想要列出至少有两个订单的所有顾客。为此,必须基于完整的分组而不是个别的行进行过滤。     基于上面的例子,我们第一时间想到的是通过使用WHERE来过滤数据,拿到我们想要的结果,但是在这个列子中WHERE不能完成任务,因为WHERE过滤指定的是行,而不是分组。事实上,WHERE没有分组的概念。 因此,SQL提供了专门用来过滤分组的类似与WHERE子句的子句,HAVING子句,事实上,几乎所有类
郑小超.
2018/01/24
1.7K0
SQL学习之HAVING过滤分组
ClickHouse中的HAVING、ORDER BY和LIMIT BY子句的使用
在ClickHouse中,HAVING子句用于对查询结果进行条件过滤。它用于在GROUP BY子句之后对聚合结果进行筛选。
一凡sir
2023/10/21
1.2K0
ClickHouse中的HAVING、ORDER BY和LIMIT BY子句的使用
大数据ClickHouse进阶(十四):ClickHouse的HAVING和ORDER BY子句
ClickHouse也支持Having子句,需要与group by 同时出现,不能单独使用,它能够在聚合计算之后实现二次过滤数据。操作如下:
Lansonli
2022/10/15
1K0
大数据ClickHouse进阶(十四):ClickHouse的HAVING和ORDER BY子句
MySQL 系列教程之(七)DQL:从 select 开始丨【绽放吧!数据库】
select * from user order by classid,age DESC
ruochen
2021/08/15
3.6K0
MySQL 系列教程之(七)DQL:从 select 开始丨【绽放吧!数据库】
Oracle sql语句--单行函数、组函数、分组与过滤组信息
函数分为系统内置函数自定义函数(后期学习的plsql 中定义);了解系统内置函数(方法),重点掌握 to_date 、 to_char (字符和日期的转换)
wolf
2020/09/20
1.4K0
根据barcode过滤bam文件
10x 单细胞产生的BAM文件可以根据所需的barcode进行过滤。首先,将所需的cell barcode条形码放入 filter.txt中。并在barcode前面加上CB:Z:,以确保专门过滤BAM文件中的该标记,格式如下所示:
生信编程日常
2020/08/14
2.4K0
根据天数计算具体日期
问题描述:Landsat数据的命名规范中对于日期是:年份+该年的第几天 具体参见:Landsat File Naming Convention 那如果通过天数计算具体的日期呢? 下面给出计算源码(Python版本): Python3下运行通过
卡尔曼和玻尔兹曼谁曼
2019/01/22
2K0
nginx根据日期记录日志
if ($time_iso8601 ~ "(\d{4})-(\d{2})-(\d{2})") {
93年的老男孩
2019/12/18
1.6K0
如何使用Linux命令和工具在Linux系统中根据日期过滤日志文件?
当使用Linux系统进行日志管理时,经常需要根据日期来过滤和检索日志文件。这在故障排除、性能监控和安全审计等方面非常有用。在本文中,我们将详细介绍如何使用Linux命令和工具在Linux系统中根据日期过滤日志文件。
网络技术联盟站
2023/06/09
4.9K0
如何使用Linux命令和工具在Linux系统中根据日期过滤日志文件?
根据日期自动加载相应的样式
首先,新创建一个CSS文件,放到原来的CSS下方(HTML位置),那么会根据顺序先匹配了原来主题的,再匹配新的CSS文件,将LOGO,导航等需要换的地方重新定义一下,很快的就实现。
红芽
2020/08/19
1.1K0
【Java 进阶篇】深入理解 SQL 聚合函数
在 SQL 数据库中,聚合函数是一组强大的工具,用于处理和分析数据。它们可以帮助您对数据进行统计、计算总和、平均值、最大值、最小值等操作。无论您是数据库开发者、数据分析师还是希望更好地了解 SQL 数据库的用户,了解聚合函数都是非常重要的。
繁依Fanyi
2023/10/12
5860
【Java 进阶篇】深入理解 SQL 聚合函数
PL-SQL温习
1.SELECT PRODUCT_NAME, PRODUCT_PRICE*0.8 FROM PRODUCT
liulun
2022/05/09
5440
Mysql 必知必会(一)
select prod_price,prod_name from products where prod_price = 2.50;
Jacob丶
2020/08/05
2.6K0
Oracle数据库增删改查
由于之前安装的oracle数据库中选择了生成示例方案,oracle默认提供了三张数据表,分别是(emp,dept,salgrade)
全栈程序员站长
2022/06/25
1.6K0
Oracle数据库增删改查

相似问题

具有WHERE和HAVING子句的最大日期- Teradata

20

根据最大日期过滤结果

33

having-子句中的最大计数

12

Oracle中的NOT HAVING (inverse HAVING)子句with

461

having子句问题

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文