Sobes.tech
Middle

როგორ გამოვიტანოთ SQL-ში თითოეული განცხადებისთვის აქტუალური მისამართი და ფასი?

sobes.tech AI

პასუხი AI-სგან

SQL-ში თითოეული განცხადებისთვის აქტუალური მისამართისა და ფასის გამოსატანად, საჭიროა განსაზღვროთ, რა ნიშნავს "აქტუალურ" — ჩვეულებრივ, ეს არის ბოლო ჩანაწერი თარიღის ან ვერსიის მიხედვით თითოეულ განცხადებაზე.

დავუშვათ, არსებობს ცხრილი ads და მასში სვეტები: ad_id, address, price, updated_at.

მაგალითური სვეტია, რომელიც თითოეულ განცხადებაზე აირჩევს მაქსიმალურ განახლებას:

SELECT ad_id, address, price
FROM ads a
WHERE updated_at = (
    SELECT MAX(updated_at)
    FROM ads
    WHERE ad_id = a.ad_id
);

თუ ბაზა მონაცემთა ბაზა მხარდაჭერას ახდენს ფანჯრის ფუნქციებს, შეგიძლიათ გამოიყენოთ:

SELECT ad_id, address, price
FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY ad_id ORDER BY updated_at DESC) as rn
    FROM ads
) sub
WHERE rn = 1;

ეს საშუალებას მოგცემთ მიიღოთ თითოეული განცხადებისთვის ყველაზე ახალი მისამართი და ფასი.