Nếu kết quả trả về là GIÁ TRỊ LỚN NHẤT của GDP hay POP theo từng năm mà muốn hiển thị có tên quốc gia kèm theo nữa thì mình làm sao ah. Vì kết quả trả về theo như nội dung bài tập chỉ là giá trị lớn nhất theo từng năm mà ko thấy quốc gia tương ứng giá trị lớn nhất ah.
Dạ vâng Gitiho xin giải đáp thắc mắc của Anh/Chị là:
Để lấy giá trị GDP lớn nhất hoặc dân số lớn nhất theo từng năm cùng với tên quốc gia tương ứng, Anh/Chị có thể sử dụng hàm ROW_NUMBER() hoặc RANK() để xác định hàng có giá trị lớn nhất cho mỗi năm. Dưới đây là cách thực hiện:
Sử dụng ROW_NUMBER()
WITH RankedGDP AS (
SELECT
Country,
Year,
gdp_value,
ROW_NUMBER() OVER (PARTITION BY Year ORDER BY gdp_value DESC) AS rn
FROM
gdp
)
SELECT
Country,
Year,
gdp_value
FROM
RankedGDP
WHERE
rn = 1;
Sử dụng RANK()
WITH RankedGDP AS (
SELECT
Country,
Year,
gdp_value,
RANK() OVER (PARTITION BY Year ORDER BY gdp_value DESC) AS rnk
FROM
gdp
)
SELECT
Country,
Year,
gdp_value
FROM
RankedGDP
WHERE
rnk = 1;
Thanks em.
Anh nghĩ nếu làm theo công thức của em thì sẽ ra kết quả “gdp cao nhất tương ứng của từng quốc gia”, trong khi anh chỉ muốn lấy “gdp cao nhất của 1 nước” thôi em ah. Không lẽ giờ chuyển sang dùng TOP 1*…..sau đó ORDER BY theo thứ tự giảm dần để lấy giá trị gdp cao nhất tương ứng chỉ có duy nhất 1 nước thôi em.
Trân trọng
Dạ vậy Anh/Chị tham khảo code sau ạ?
SELECT TenQuocGia, GDP
FROM Bang
WHERE GDP = (SELECT MAX(GDP) FROM Bang);
Thanks em, câu lệnh của em đúng như mong muốn của anh rồi ah.