多个子查询

时间:2019-12-04 04:24:17

标签: sql oracle

我有一个Excel文件,其中包含十月月份的列

  • SLID-代表用户ID
  • 初次约会
  • 最后一次约会
  • 总数_计数
  • cust_name
  • 最近90天的总计会议
  • 30天内有效

我有4张桌子

  • 具有2列SLUSR_USR_ID,SLUSR_USR_Cust_name的SLUSR_USR
  • 具有2个列SK_STS_COMPANYID的销售,SALES_DATE
  • 带有3列companyID,SK_COMPANYID,STS_SK_SLUSRID的SK_COMPANY
  • 带有3列SK_SLUSRID,STS_companyID,report_DATE的SLUSR_CLick

通过使用此查询,我可以按每个ID获取会议总数

SELECT
    SLUSR_USR_ID, SLUSR_USR_CUST_NAME, SALES_COUNT 
FROM
    (SELECT
         SLUSR_USR_ID, SLUSR_USR_CUST_NAME, 
         COUNT(SALES_DATE) SALES_COUNT
     FROM
         SLUSR_USR, SALES, SK_COMPANY
     WHERE
         SLUSR_USR_ID = STS_SK_SLUSR_ID
         AND companyID = SK_STS_COMPANY_ID
         AND TRUNC(SALES_DATE) BETWEEN '01-Oct-2019' AND '31-Oct-2019'
     GROUP BY
         SLUSR_USR_ID, SLUSR_USR_CUST_NAME)

这将返回Total_MEET_Count,SLID和CUST_NAME

注意:“销售日期”的编号等于“销售日期”。每个SLUSR_user_ID和“报告日期”完成的会议数量将显示每个SLID的活动状态-> SLID等同于SLUR_USR_ID->将公司ID分配给每个SLID->一个SALES_date意味着每个SLID举行一个会议)

我仍然在努力处理一些计数,即想在子查询中使用以下查询

firsT_Meet_date
LAst_meet_date
Total_meet in Last90DAYS
Active In 30Days

对于第一个和最后一次见面日期,我使用了max和min函数

SELECT 
    MAX(SALES_DATE), MIN(SALES_DATE), 
    SLUSR_USR_ID, COUNT(SALES_DATE)
FROM
    SLUSR_USR, DSR_SALES, SK_COMPANY
WHERE
    SLUSR_USR_ID = STS_SK_SLUSR_ID
    AND companyID = SK_STS_COMPANY_ID
    AND TRUNC(SALES_DATE) BETWEEN '01-Oct-2019' AND '31-Oct-2019'
GROUP BY 
    SLUSR_USR_ID

并且对于Last90DAYS中的Total_meet和30天中的Active我想通过sysDATE-90使用表SLUSR_CLick

0 个答案:

没有答案