2015-11-23 4 views
-1

Я написал ниже код, и я хочу вернуть pqpageId, дату и час, на которых он имеет минимальный счет. Спасибо заранее.Возврат почасового минимального количества столбцов?

код:

WITH CTE AS (
        SELECT PQIM.PQPageID 
         ,PQIM.PageURL as PageDescription 
         ,CONVERT(Date,NCPI.RequestDateTime) AS [Date] 
         ,DATEPART(HOUR,NCPI.RequestDateTIme) AS [HOUR] 
         ,ISNULL (COUNT(NCPI.PQPageID),0)AS HourlyPQPageIdCount 

        FROM dbo.NewCarPurchaseInquiries AS NCPI WITH (NOLOCK) 
        RIGHT JOIN dbo.PQPageIds_MasterTblFrom3rdNov2015 AS PQIM WITH (NOLOCK) 
           ON PQIM.PQPageID = NCPI.PQPageId 
           --WHERE NCPI.RequestDateTime between dateadd(hour, -1, getdate()) and getdate() 
           WHERE CONVERT(DATE,NCPI.RequestDateTime) >= '2015-11-04' 
           AND DATEPART(hour,NCPI.RequestDateTime) between 8 and 23 
         GROUP BY PQIM.PQPageId,CONVERT(Date,NCPI.RequestDateTime), DATEPART(HOUR,NCPI.RequestDateTIme),PQIM.PageURL 
        ) 

    SELECT CT.PQPageId , CT.Date ,CT.HOUR, MIN(CT.HourlyPQPageIdCount)AS MINCOUNT   
    FROM CTE CT WITH (NOLOCK) 
    GROUP BY CT.PQPageId , CT.Date ,HourlyPQPageIdCount,CT.HOUR 
    ORDER BY MINCOUNT,CT.[HOUR],CT.[Date], PQPageID asc 

Output : 

PQPageId Date HOUR MINCOUNT 
1 04-11-2015 8 2359 

1 05-11-2015 8 2332 

1 06-11-2015 8 2008 

1 07-11-2015 8 1964 

1 08-11-2015 8 2139 

1 09-11-2015 8 54 


2 04-11-2015 9 10 

2 11-11-2015 9 56 

Но я ожидал

PQPageId || Дата || ЧАС || MINCOUNT

1 09-11-2015 8 54

2 04-11-2015 9 10

+1

Добро пожаловать в StackOverflow. Пожалуйста, убедитесь, что ваш вопрос действительно содержит вопрос. Объясните логику, которую пытается выполнить ваш запрос, вместо того, чтобы ожидать от людей вывода из ожидаемых и фактических результатов. Чем больше информации вы предоставляете, тем лучше ваши шансы получить полезный ответ. – APC

ответ

0

Вы можете попробовать этот код:

WITH CTE AS (...) 
SELECT PQPageId, Date, HOUR, HourlyPQPageIdCount AS MINCOUNT 
FROM (
    SELECT PQPageId, Date, HOUR, HourlyPQPageIdCount 
      RANK() OVER(PARTITION BY HOUR ORDER BY HourlyPQPageIdCount) AS r 
    FROM CTE WITH (NOLOCK)) A 
WHERE r = 1 
Смежные вопросы