PDA

View Full Version : علت برگشت مقدار ثابت در این کوئری چیست ؟



mmnoody2006
جمعه 16 دی 1390, 14:07 عصر
با سلام من جدولی به شکل زیر دارم :

http://i.stack.imgur.com/gmGdx.gif

که توسط کوئری زیر می خوام تعداد بازدید و بازدید کننده (ip) هر روز رو بدست بیارم به همراه تاریخ اون روز که این کوئری در مورد بازدید و تاریخ مشکلی نداره ولی در مورد تعداد آی پی هر روز برای همه روزها یک مقدار ثابت بر می گردونه که اشتباست :


declare @start datetime
declare @end datetime

set @start = '2012/01/02'
set @end = '2012/01/06'


SELECT
SUM(VCount) as [Total],
vdate as [mdate],
(select COUNT(*) From
(SELECT DISTINCT(VIP) FROM dbo.Visiter ) AS a ) as [IP3]
FROM dbo.Visiter
where VDate between @start and @end
GROUP BY VDate


این نتیجه اجرای کوئری بالاست :

http://i.stack.imgur.com/YKeRR.gif

ولی باید به شکل زیر برگردونه :

http://i.stack.imgur.com/Ym42g.gif

اینم دیتای جدول مورد نظر :
http://i.stack.imgur.com/p05gK.gif

mohdeL
جمعه 16 دی 1390, 16:15 عصر
با سلام
الان فیلتر نمودن تاریخ در
SELECT DISTINCT(VIP) FROM dbo.Visiter
اعمال نشده است

mmnoody2006
جمعه 16 دی 1390, 17:13 عصر
SELECT DISTINCT(VIP) FROM dbo.Visiter where VDate between @start and @end


باز هم نتایج همونه

یوسف زالی
جمعه 16 دی 1390, 18:17 عصر
سلام.
این رو امتحان کن:
count(distinct 1) as IP3

SELECT SUM(VCount) as [Total],vdate as [mdate],count(distinct 1) as IP3 from...

mmnoody2006
جمعه 16 دی 1390, 19:15 عصر
سلام.
این رو امتحان کن:
count(distinct 1) as IP3

SELECT SUM(VCount) as [Total],vdate as [mdate],count(distinct 1) as IP3 from...

متوجه کد شما نشدم البته error هم می ده

mmnoody2006
جمعه 16 دی 1390, 19:42 عصر
بله درست بود

COUNT(DISTINCT Vip) as [IP3]

:لبخند:

nedata
سه شنبه 20 دی 1390, 00:45 صبح
سلام. از كد زير مي توانيد استفاده كنيد

SELECT COUNT(*) AS cnt, vdate, SUM(cnt1) AS Expr2
FROM (SELECT vdate, vip, COUNT(*) AS cnt1
FROM visiter v
GROUP BY vdate, vip) a
GROUP BY vdate