MySQLでテーブルから上位2つの最大値を取得する方法
MySQLでテーブルから最も大きい値の上位2件を取得したい場合は、ORDER BY句とLIMIT句を組み合わせて使用します。カラムを降順(DESC)で並べ替え、LIMIT 2を指定することで、上位2件のみを効率的に取得できます。
基本構文
select * from yourTableName order by yourColumnName DESC LIMIT 2;
実際に試してみよう
まずはサンプル用のテーブルを作成します。
mysql> create table DemoTable -> ( -> Value int -> ); Query OK, 0 rows affected (0.54 sec)
次に、INSERT文を使っていくつかのレコードを挿入します。
mysql> insert into DemoTable values(90); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable values(70); Query OK, 1 row affected (0.28 sec) mysql> insert into DemoTable values(40); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(120); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values(98); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(105); Query OK, 1 row affected (0.19 sec)
SELECT文ですべてのレコードを表示して確認しましょう。
mysql> select *from DemoTable;
出力結果
+-------+ | Value | +-------+ | 90 | | 70 | | 40 | | 120 | | 98 | | 105 | +-------+ 6 rows in set (0.00 sec)
上位2件の最大値を取得するクエリ
以下のクエリを実行すると、Valueカラムの値が大きい順に並べ替えられ、そのうち上位2件だけが返されます。
mysql> select *from DemoTable order by Value DESC LIMIT 2;
出力結果
+-------+ | Value | +-------+ | 120 | | 105 | +-------+ 2 rows in set (0.00 sec)
このように、ORDER BYで降順ソートを行いLIMIT 2を指定するだけで、テーブル内の最も大きい値トップ2を簡単に取得できます。同様の手法は、売上ランキングやスコアの上位抽出など、さまざまな場面で応用できるので覚えておくと便利です。
-
MySQLでタイムスタンプ値を使って今日と昨日の2日分のデータを取得する方法
はじめにこの記事では、bigint型として保存されたUNIXタイムスタンプ値を持つMySQLテーブルから、「今日」と「昨日」の2日分のデータを抽出する方法を解説します。unix_timestamp()関数とcurdate()関数、そしてINTERVAL句を組み合わせることで、日付計算を簡単に行うことができます。1. サンプルテーブルの作成まず、出荷日をタイムスタンプ値で格納するテーブルを作成します。mysql> create table DemoTable1495 -> ( -> Sh
-
MySQLでテーブルの重複を除いたレコードから平均値を取得するクエリの書き方
MySQLで平均値を求めるには AVG() 関数を使用します。さらに DISTINCT と組み合わせることで、重複しているレコードを除外した状態で平均を計算することができます。この記事では、実際にサンプルテーブルを作成しながら、個別(ユニーク)なレコードから平均値を取得する方法を解説します。サンプルテーブルの作成まず、以下のクエリでテーブルを作成します。mysql> create table DemoTable1934 ( StudentName varchar(20), StudentMarks int ); Query OK, 0 rows affec