У меня есть таблица, которая определяется следующим образом:TSQL эффективность запроса
CREATE TABLE [dbo].[ListingStats](
[ListingStatID] [int] IDENTITY(1,1) NOT NULL,
[StatTypeID] [int] NOT NULL,
[CreatedDate] [date] NOT NULL,
[ListingID] [int] NOT NULL,
CONSTRAINT [PK_ListingStats] PRIMARY KEY CLUSTERED
(
[ListingStatID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Я пытаюсь получить 4 итоговые значения для каждого типа (listingStatTypeID) на сегодняшний день, последние 7 дней, последние 30 дней, и все время ,
Я не уверен, какой самый эффективный запрос будет. Прямо сейчас у меня есть следующее, что я могу повторить для каждого TYPE, но это будет большой запрос, и будет много вызовов.
declare @listingID int
set @listingID = 209722
--today
select count(1) from ListingStats where listingid = @listingid and CreatedDate = getdate()
--last 7 days
select count(1) from ListingStats where listingid = @listingid and CreatedDate > getdate()-7
--last 30 days
select count(1) from ListingStats where listingid = @listingid and CreatedDate > getdate()-30
--all time
select count(1) from ListingStats where listingid = @listingid
Я всегда вызываю это для одного списка за раз, предоставляя идентификатор листинга. Если бы кто-нибудь мог указать направление, я был бы признателен. Должен ли я создать какое-то представление?
Ожидаемые результаты
-Type------Today-----7Days---30Days---Ever
1 44 50 500 5000
2 22 40 90 1000
3 55 55 555 5555
Я думаю, что ваш последний запрос - это то, что я ищу, но изменение конца на where listingid = @listingid GROUP BY StatTypeID и удаление листинга из select, а также фиксация даты, когда Gordon указал – Zoinky
. Есть ли какая-либо польза в посылке этого запроса в представлении?он будет называться по требованию (пользователь должен нажать кнопку, чтобы довести статистику) – Zoinky
Если вы все еще ищете информацию для одного значения листинга, то да, измените последний запрос с помощью 'WHERE ListingID = @ listingid' , –