【发布时间】:2022-01-23 07:53:11
【问题描述】:
我想了解在上一年和当前一年的回顾中销售汽车的员工的不同数量。以下示例中的日期为 2018 年 11 月 18 日。当只使用一个“介于和”子句但不满足两个条件时,我可以提取计数。
SELECT COUNT(UNIQUE(EMPLOYEE_ID))
FROM SALES_TABLE_123
WHERE SOLD_ITEM = 'CARS'
AND (SELL_DATE) BETWEEN ('2017-11-19') AND ('2018-11-19')
AND (SELL_DATE) BETWEEN ('2016-11-18') AND ('2017-11-18');
【问题讨论】:
-
Edit问题并提供minimal reproducible example,即涉及的表或其他对象的
CREATE语句(粘贴文本,不要使用图像,不要链接到外部站点),INSERT用于示例数据 (dito) 的语句以及带有表格文本格式的示例数据的所需结果。标记您正在使用的 DBMS。 -
'AND' 运算符查找每行的 SELL_DATE 是否同时位于第一个间隔和第二个间隔;这是不可能的,因为间隔不重叠;您要查找的是: AND ((SELL_DATE) BETWEEN ('2017-11-19') AND ('2018-11-19') OR (SELL_DATE) BETWEEN ('2016-11-18') AND (' 2017-11-18'));也可以写成:AND SELL_DATE BETWEEN '2016-11-18' AND '2018-11-19';
-
@userMT 否,因为符合条件的销售记录需要在上一年和当年发生。我可以突破并找到每个时间段内出现的所有ID,然后进行内部连接以查看两个时间段中哪些ID重叠,只是不知道是否有更好的方法来思考这个问题。谢谢。
-
所以您的意思是在两个时期内都应该为 sell_item 发生“卖出”。您的“突破和内部连接”逻辑正处于正确的轨道上。