PostgreSQL: เลือกราคาสูงสุด 3 อันดับของแต่ละสินค้า?
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 222   1
URL.หัวข้อ / URL
PostgreSQL: เลือกราคาสูงสุด 3 อันดับของแต่ละสินค้า?

ใน MS SQL Server 2000 / Access:

ถ้าจะแสดงราคาสูงสุด 3 อันดับของสินค้าแต่ละตัว ผมจะใช้ Top 3 ช่วย

SELECT Product, Price
FROM sales B
WHERE Price IN
(SELECT TOP 3 Price
FROM sales A
WHERE A.Product = B.Product
ORDER BY Price DESC)
ORDER BY Product, Price DESC

ถ้าเป็นใน Postgres จะไม่มี Top ให้ใช้ แต่โชคดีที่มี Limit ให้
ฉะนั้นใน Postgres ผมใช้อย่างนี้ครับ

mydb=# SELECT Product, Price
mydb-# FROM sales AS B
mydb-# WHERE Price IN
mydb-# (SELECT Price
mydb(# FROM sales A
mydb(# WHERE A.Product = B.Product
mydb(# ORDER BY Price DESC Limit 3)
mydb-# ORDER BY Product, Price DESC;

product | price
---------+-------
A | 12
A | 11
A | 11
B | 110
B | 100
C | 60
C | 55
C | 50
C | 50
(9 rows)

ส่วนใน MySQL 4.0.13 ที่ผมใช้อยู่ ยังไม่สนับสนุน Subqueries ถึงแม้จะมี Limit เหมือนใน Postgres ก็ตาม เลยทำไม่ได้ครับ จึงต้องรอเวอร์ชัน 4.1 ก่อน

ถ้าท่านอื่นมีวิธีทำใน MySQL ช่วยแจ้งมาด้วยนะครับ

1 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R04097
ถ้าผมจำไม่ผิด ก็คงประมาณนี้ครับ...

Select product,max(price) from salse

คือใช้ Function MAX() ของ MySQL เข้าช่วย แต่น่าจะแสดงแค่ค่าสูงสุดเท่า
นั้น ...ไม่แน่ใจว่าถ้าต่อท้ายด้วย limit 3 จะแสดงออกมาตามต้องการหรือเปล่า
เพราะผมยังไม่ได้ลองครับ..
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0496s