MAXIMUM, MINIMUM MySQL


Beberapa contoh menggunakan tabel shop untuk memegang harga setiap article (jumlah item) untuk pedagang tertentu (dealer). Misalkan bahwa setiap dealer memiliki harga tunggal tetap per article, maka (article, dealer) adalah primary key untuk record.

Mulai mysql command-line tool dan pilih database:

shell> mysql -u user -p nama-database

Enter password :

(Dalam instalasi MySQL sebagian besar, anda dapat menggunakan database bernama test).

Anda dapat membuat dan mengisi tabel contoh dengan pernyataan ini:

mysql> CREATE TABLE shop (
-> article INT(4) UNSIGNED ZEROFILL DEFAULT ‘0000’ NOT NULL,
-> dealer CHAR(20) DEFAULT ” NOT NULL,
-> price DOUBLE(16,2) DEFAULT ‘0.00’ NOT NULL,
-> PRIMARY KEY (article, dealer));

mysql> INSERT INTO shop VALUES
-> (1, ‘A’, 3.45), (1, ‘B’, 3.99), (2, ‘A’, 10.99), (3,’B’, 1.45),
-> (3, ‘C’, 1.69), (3, ‘D’, 1.25),
-> (4, ‘D’, 19.95);

Nilai Maximum untuk Kolom

mysql> SELECT MAX(article) FROM shop;

atau

mysql> SELECT MAX(article) AS article FROM shop;

Baris yang Memegang Maximum pada Kolom Tertentu

Tugas: Menemukan nomor, dealer, and price dari article yang paling mahal.
Hal ini mudah dilakukan dengan subquery:

mysql> SELECT article, dealer, price
-> FROM shop
-> WHERE price=(SELECT MAX(price) FROM shop);

Solusi lain adalah menggunakan LEFT JOIN atau mengurutkan semua baris descending berdasarkan harga dan hanya mendapatkan baris pertama dengan menggunakan klausa MySQL-specific LIMIT:

mysql> SELECT s1.article, s1.dealer, s1.price
-> FROM shop s1
-> LEFT JOIN shop s2 ON s1.price < s2.price
-> WHERE s2.article IS NULL;

mysql> SELECT article, dealer, price
-> FROM shop
-> ORDER BY price DESC
-> LIMIT 1;

Jika ada artikel yang paling mahal, masing-masing dengan harga 19,95, solusi LIMIT akan menunjukkan hanya satu dari mereka.

Nilai Maximum dari Kolom per Grup

Tugas: Cari harga tertinggi per artikel.

mysql> SELECT article, MAX(price) AS price
-> FROM shop
-> GROUP BY article;

Baris Memegang Maximum Group-wise dari Kolom Tertentu
Tugas: Untuk setiap artikel, mencari dealer dengan harga paling mahal.
Masalah ini dapat diatasi dengan subquery seperti ini:

mysql> SELECT article, dealer, price
-> FROM shop s1
-> WHERE price = (SELECT MAX(s2.price) FROM shop s2
-> WHERE s1.article = s2.article);

Contoh di atas menggunakan subquery berkorelasi, yang dapat menjadi tidak efisien. Kemungkinan lain untuk memecahkan masalah ini adalah untuk menggunakan subquery tidak berkorelasi dalam klausa FROM atau LEFT JOIN:

mysql> SELECT s1.article, dealer, s1.price
-> FROM shop s1
-> JOIN (SELECT article, MAX(price) AS price
-> FROM shop
-> GROUP BY article) AS s2
-> ON s1.article = s2.article AND s1.price = s2.price;

mysql> SELECT s1.article, s1.dealer, s1.price
-> FROM shop s1
-> LEFT JOIN shop s2 ON s1.article = s2.article AND s1.price < s2.price
-> WHERE s2.article IS NULL;

Menggunakan User-Defined Variabel

Anda dapat menggunakan variabel pengguna MySQL untuk mengingat hasil tanpa harus menyimpannya dalam variabel sementara di klien.

Sebagai contoh, untuk menemukan artikel dengan harga tertinggi dan terendah anda dapat melakukan ini:

mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;

Iklan
  1. No trackbacks yet.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: