【问题标题】:DISTINCT COUNT OF IDS PRESENT IN TWO TIME PERIODS两个时间段内出现的不同 IDS 计数
【发布时间】: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 发生“卖出”。您的“突破和内部连接”逻辑正处于正确的轨道上。

标签: sql date count unique


【解决方案1】:
SELECT COUNT(UNIQUE(LY.EMPLOYEE_ID))
FROM SALES_TABLE_123 LY
     inner join
     SALES_TABLE_123 TY
     on LY.EMPLOYEE_ID=TY.EMPLOYEE_ID
WHERE LY.SOLD_ITEM = 'CARS'
AND TY.SOLD_ITEM='CARS'
AND TY.SELL_DATE BETWEEN ('2017-11-19') AND ('2018-11-19')
AND LY.SELL_DATE BETWEEN ('2016-11-18') AND ('2017-11-18');

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多