معرفی
در این مقاله، نحوه استفاده از تابع Lag در SQL را برای بدست آوردن مقدار سطر قبل یاد خواهیم گرفت. همچنین نحوه بدست آوردن مقادیر ردیف قبلی در SQL را بدون استفاده از تابع تاخیر بررسی خواهیم کرد. در بسیاری از مصاحبه ها، مصاحبه کنندگان از داوطلبان می پرسند که آیا می توانند مقدار ردیف قبلی را در SQL بیابند. اکثر متقاضیان به سرعت به استفاده از تابع تاخیر پاسخ می دهند. برای اضافه کردن یک پیچ و تاب، مصاحبه کنندگان از نامزدها می پرسند که آیا می توانند این راه حل را بدون استفاده از تابع تاخیر ایجاد کنند. من کاندیداهایی را می بینم که در تلاش برای یافتن پاسخ صحیح هستند. این مقاله نحوه بازیابی مقادیر ردیف قبلی در SQL را با استفاده از تابع Lag و بدون استفاده از تابع Lag نشان خواهد داد.
تابع تاخیر در SQL
SQL Server 2012 به بعد، این یک تابع پنجره است. در اینجا ما از تابع Lag () برای دریافت اطلاعات از ردیف های قبلی بر اساس مقدار افست استفاده می کنیم. با استفاده از تابع Lag می توانیم به ردیف های قبلی دسترسی پیدا کنیم. این یک ابزار مفید برای مقایسه مقادیر ردیف فعلی و قبلی است.
واکشی مقدار ردیف قبلی با تابع تاخیر
امیدوارم بیان مشکل را متوجه شده باشید. من یک جدول با چهار ستون ایجاد کرده ام: شناسه، نام، پشته و حقوق. من از شما می خواهم که به عنوان بخشی از این مقاله بر روی شناسه تمرکز کنید. ستونی از اعداد متوالی مانند 1،2،3 و غیره است. و باید بفهمم که مقدار سطر قبلی ستون id برای هر سطر چقدر بود.
CREATE TABLE details (
id int,
name varchar(50),
stack varchar(50),
salary int
);
INSERT INTO details
VALUES (1, 'ishika', 'Graphite GTC', 100);
INSERT INTO details
VALUES (2, 'deepak', 'CMS', 2000);
INSERT INTO details
VALUES (3, 'nitin', 'Unity', 40000);
INSERT INTO details
VALUES (4, 'abhishek', 'IOS', 60000);
INSERT INTO details
VALUES (5, 'vijay', '.NET', 80000);
INSERT INTO details
VALUES (6, 'Vijay kumari ', 'Hiring', 90000);
SELECT * FROM details;
خروجی
id,
LAG(id) OVER (ORDER BY id) AS previous_id,
name,
stack,
salary
FROM details;
بگذارید با آن شروع کنم؛ ابتدا از تابع تاخیر استفاده می کند. هر زمان که هر ردیف قبلی یا بعدی را بازیابی می کنید، مجموعه داده های شما باید به روش خاصی مرتب شود. ابتدا از Lag of id استفاده می کنیم. بنابراین، در این مورد، اجازه دهید من با خود id مرتب کنم و این ستون را به عنوان previous_id نامگذاری کنم. حالا، این previous_id من است. اجازه دهید من این پرس و جو را اجرا کنم و خروجی نشان داده شده در عکس فوری زیر را ببینم.