PDA

View Full Version : پيدا کردن ماکزيمم هر يک دقيقه



MEGANMEGAN
یک شنبه 13 اسفند 1391, 09:01 صبح
با سلام
قبلا در مورد پيدا کردن متوسط هر يک دقيقه اي در جدولي که به ازاي هر يک ثانيه يک مقدار در ستون value ثبت شده است جواب گرفتم حالا مي خواهم ماکزيمم هر يک دقيقه را همراه با زمان وقوع ماکزيمم در جواب يک کوئري دريافت کنم

محمد سلیم آبادی
یک شنبه 13 اسفند 1391, 18:41 عصر
برای دریافت یک جواب دقیق لطفا یک نمونه داده و نتیجه مورد نظر را در قالب سطر و ستون ارائه دهید

MEGANMEGAN
دوشنبه 14 اسفند 1391, 13:53 عصر
ببينيد دوستان در حقيقت من دنبال جواب اين سوالم:
من جدولي دارم که داراي دو ستون zaman و value است. در اين جدول به ازاي هر تاريخ (date و time )يک عدد حقيقي ثبت شده است(براي يک دقيقه 60 سطر وجود دارد) و اين در حالي است که ممکن است در 60 سطر مربوط به يک دقيقه چندين سطر داراي مقادير يکسان باشند حالا سوال من اين است چطورمي توان مقادير تکراري را در هر يک دقيقه يافت و فقط يکي از انها را باقي گذاشت و بقيه را از جدول حذف کرد؟تاکيد ميکنم که نمي خواهم در تمام جدول اين مقادير تکراري را حذف کنم بلکه در ميان مقادير مربوط به هر دقيقه اين کار را انجام دهم؟

sohrabsgh
دوشنبه 14 اسفند 1391, 20:42 عصر
دوست عزیز برای اینکه تو دستور های select مقدار تکراری برگردانده نشود از دستور زیر استفاده کنی
select Distinct value from tablename
راه حل من برا شما اینه که یه دستور select بزنید که مقادیر تکراری حذف بشه، سپس مقادیر بدست اومده رو insert کنید.

MEGANMEGAN
سه شنبه 15 اسفند 1391, 07:37 صبح
مشکل اينجاست که من چون مي خواهم ماکزيمم مقدار در بين مقادير مربوط به يک دقيقه را پيدا کنم بادستور شما اين امر مختل مي شود. به مثال زيرتوجه کنيد:

7:01:00 10
7:01:01 20
7:01:02 30
7:01:03 30
7:01:04 14
.
.
.
.
.
7:02:01 30
7:02:02 34
7:02:03 17
.
.

حالا بااجراي دستور شما مثلا فقط با حذف از بين مقادير با مقدار 30 مقدار ماکزيمم دقيقه اول 20 مي شود چرا که دراين حذف کل مقادير 30 از دقيقه اول حذف مي شود در حاليکه اگر مقادير تکراري در هر دقيقه حذف شود ماکزيمم مقدار در دقيقه اول 30 مي شود!!

محمد سلیم آبادی
چهارشنبه 16 اسفند 1391, 10:29 صبح
سر انجام مشکلتون دقیقا چیه؟
می خواهین مقادیر تکراری را از جدول حذف کنید یا اینکه ماکزیمم مقدار هر دقیقه را بدست بیارید؟
در مثال پست پیشین خروجی دقیقا چی باید باشه؟ در دقیقه اول دو مقدار 30 دارید هر دو سطر باید انتخاب بشه؟ یا اینکه...

MEGANMEGAN
چهارشنبه 16 اسفند 1391, 11:07 صبح
دقيقا ميخوام ماکزيمم مقادير مربوط به يک دقيقه رو بدست بياورم مثلا اگر در اعداد مربوط به يک دقيقه چند مقدار ماکزيمم با مقدار يکسان وجود داشت يکي از ان ها به همراه زمانش بدست ايد در مورد مثال بالا :
7:01:02 30
7:02:02 34
اميدوارم منظورم رو خوب توضيح داده باشم

محمد سلیم آبادی
چهارشنبه 16 اسفند 1391, 11:20 صبح
این جدول فرضی
DECLARE @MyTable AS TABLE (
MyTime TIME,
MyVal DECIMAL(19, 5)
);

INSERT INTO @MyTable VALUES
('00:00:00', 1),
('00:00:01', 5),
('00:00:02', 70),
('00:00:59', 10),

('00:01:00', 10),
('00:01:18', 20),
('00:01:59', 20),

('23:01:59', 18)

اینم query برای تولید نتیجه مورد نظر
select t.x, min(mytime) time
from @MyTable m
join
(
SELECT
MAX(MyVal) x,
DATEPART(HOUR, MyTime) h,
DATEPART(MINUTE, MyTime) m
FROM
@MyTable
GROUP BY
DATEPART(HOUR, MyTime),
DATEPART(MINUTE, MyTime)
)t on
DATEPART(HOUR, m.MyTime) = t.h
and DATEPART(MINUTE, m.MyTime) = t.m
and m.MyVal=t.x
group by t.h,t.m,t.x;