sql >> データベース >  >> RDS >> Mysql

MySQLで最大値のレコードを取得する方法

    多くの場合、SQLで最大列値を持つ行を選択する必要があります。組み込み関数がないため、SQLクエリを使用して最大値のレコードを取得する必要があります。 MySQLで最大値のレコードを取得する方法は次のとおりです。これを使用して、PostgreSQL、SQLServerで最大値の行を取得することもできます。

    MySQLで最大値のレコードを取得する方法

    MySQLで最大値のレコードを取得する手順は次のとおりです。

    次のテーブルがあるとしますsales(order_date、sale) 毎日の売上データが含まれています。

    mysql> create table sales(order_date date,sale int, orders int);
    
    mysql> insert into sales(order_date,sale,orders) values('2020-05-29', 300, 10),
         ('2020-05-30',250, 15),( '2020-05-31', 250, 12),( '2020-06-01',250, 14),
         ('2020-06-02',150,20),('2020-06-03',300,21),('2020-06-04',200,15),
         ('2020-06-05',200,17),('2020-06-06',250,12),('2020-06-07',150,15),
         ('2020-06-08',300,12),('2020-06-09',200,18);
    
    mysql> select * from sales;
    +------------+------+--------+
    | order_date | sale | orders |
    +------------+------+--------+
    | 2020-05-29 |  300 |     10 |
    | 2020-05-30 |  250 |     15 |
    | 2020-05-31 |  250 |     12 |
    | 2020-06-01 |  250 |     14 |
    | 2020-06-02 |  150 |     20 |
    | 2020-06-03 |  300 |     21 |
    | 2020-06-04 |  200 |     15 |
    | 2020-06-05 |  200 |     17 |
    | 2020-06-06 |  250 |     12 |
    | 2020-06-07 |  150 |     15 |
    | 2020-06-08 |  300 |     12 |
    | 2020-06-09 |  200 |     18 |
    +------------+------+--------+
    

    SQLで最大列値を持つ行を選択する方法は2つあります。両方を見ていきます。

    ボーナスリード:MySQLで過去12か月のデータを取得する方法

    SQLサブクエリを使用して最大値のレコードを取得する方法

    これは、最大の saleの行を取得するためのSQLクエリです。 SQLサブクエリを使用した値。

    mysql> select * from sales where sale=(select max(sale) from sales);
    +------------+------+--------+
    | order_date | sale | orders |
    +------------+------+--------+
    | 2020-05-29 |  300 |     10 |
    | 2020-06-03 |  300 |     21 |
    | 2020-06-08 |  300 |     12 |
    +------------+------+--------+
    

    上記のクエリでは、最初にサブクエリのテーブルの最大値を選択します(太字) )。次に、販売列の値が最大値である元の販売テーブルからそれらの行を選択します。大きなテーブルの場合、 sale にインデックスを付けることで、クエリのパフォーマンスを向上させることができます。 列。

    特定の条件に従ってデータをフィルタリングする場合は、以下に示すように、サブクエリにWHERE句を追加します。

    mysql> select * from sales 
           where sale=(
              select max(sale) from sales
              WHERE <condition>
            );

    ボーナスリード:MySQLでビューを更新する方法

    各グループの最大値でレコードを取得する方法

    MySQLでGROUPBYを使用して最大値の行を取得する手順は次のとおりです。

    テーブルがあるとします。product_sales(product、order_date、sale) 複数の製品の販売データが含まれています。そして、各製品の最大販売額の記録を取得したいと考えています。

    mysql> create table product_sales(product varchar(255),order_date date, sale int);
    
    mysql> insert into product_sales(product,order_date, sale)
         values('A','2020-05-01',250),
         ('B','2020-05-01',350),
         ('C','2020-05-01',1250),
         ('A','2020-05-02',450),
         ('B','2020-05-02',650),
         ('C','2020-05-02',1050),
         ('A','2020-05-03',150),
         ('B','2020-05-03',250),
         ('C','2020-05-03',1850);
    
    mysql> select * from product_sales;
    +---------+------------+------+
    | product | order_date | sale |
    +---------+------------+------+
    | A       | 2020-05-01 |  250 |
    | B       | 2020-05-01 |  350 |
    | C       | 2020-05-01 | 1250 |
    | A       | 2020-05-02 |  450 |
    | B       | 2020-05-02 |  650 |
    | C       | 2020-05-02 | 1050 |
    | A       | 2020-05-03 |  150 |
    | B       | 2020-05-03 |  250 |
    | C       | 2020-05-03 | 1850 |
    +---------+------------+------+
    

    ボーナスリード:MySQLで1日あたりの累積総ユーザー数を取得する方法

    これは、各グループ、つまり各製品について、GROUPBYを使用して最大値のレコードを取得するためのSQLクエリです。

    mysql> select product_sales.* from product_sales,
          (select product,max(sale) as sale 
               from product_sales 
               group by product) max_sales 
            where product_sales.product=max_sales.product 
            and product_sales.sale=max_sales.sale;
    +---------+------------+------+
    | product | order_date | sale |
    +---------+------------+------+
    | A       | 2020-05-02 |  450 |
    | B       | 2020-05-02 |  650 |
    | C       | 2020-05-03 | 1850 |
    +---------+------------+------+
    

    上記のクエリでは、最初にネストされたサブクエリ(太字)を使用して各商品の最大販売額を計算します。 )、結果を元の product_salesと結合します 製品と販売の列に基づく表。

    うまくいけば、テーブルの最大列値を持つ行を取得できます。

    Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. Postgresqlの日時フィールドの日付を比較するにはどうすればよいですか?

    2. Oracleのログテーブルから電子メール本文にデータをエクスポートする方法

    3. SQL Server(T-SQL)でUnixタイムスタンプを返す方法

    4. SQL Serverで、特定のテーブルに対してCREATE TABLEステートメントを生成するにはどうすればよいですか?