Запрос на MAX в столбце даты и COUNT другого столбца - PullRequest
0 голосов
/ 27 апреля 2018

Я выполнил следующий запрос с помощью cte, но мне было интересно, существует ли более простой способ написания кода, возможно, с помощью подзапросов? Я получаю все из одной таблицы SALES, но я использую 3 столбца: AgentID, SaleDate и OrderID.

WITH RECENT_SALE AS(
    SELECT AGENTID,(
    SALEDATE,
 ROW_NUMBER() OVER (PARTITION BY AGENTID ORDER BY SALEDATE DESC) AS RN
 FROM SALES
)
,
 COUNT_SALE AS (
    SELECT AGENTID,
 COUNT(ORDERID) AS COUNTORDERS
 FROM SALES
)

  SELECT RECENT_SALE.MRN, 
 SALEDATE, 
 COUNTORDERS

 FROM RECENT_SALE
 INNER JOIN COUNT_SALE ON RECENT_SALE.AGENTID = COUNT_SALE.AGENTID;

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Мне кажется, вы просто пытаетесь узнать общее количество продаж на одного агента, а также дату его или ее последней продажи? Если я правильно понимаю вашу структуру (а может и нет), то это кажется довольно простым. Я предполагаю, orderid является первичным ключом SALES?

SELECT agentid, MAX(saledate) AS saledate -- Most recent sale date
     , COUNT(orderid) AS countsales -- total sales
  FROM sales
 GROUP BY agentid;

Кажется, здесь нет необходимости в CTE или подзапросах.

0 голосов
/ 28 апреля 2018

Попробуйте это:

 SELECT 
    saledate,
    AGENTID, 
    count(orderid) over(partition by AGENTID order by saledate)
 FROM SALES
 group by  
    saledate,
    AGENTID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...