ホームページ データベース mysql チュートリアル sql数据分组(GROUP BY)最大值,第一条,前三条实例

sql数据分组(GROUP BY)最大值,第一条,前三条实例

Jun 07, 2016 pm 05:49 PM
sql

sql数据分组最大值,第一条,前三条方法总结,三个实例都比较简单都是根据GROUP BY出来的数据进行一些简单操作即可,有需要的同学可参考一下.

取分组前三第记录

 代码如下 复制代码

SELECT  课程,
        SUM(奖金) AS 奖金
FROM    ( SELECT    课程,
                    学号,
                    成绩
          FROM      考试 AS a
          WHERE     ( SELECT    COUNT(*)
                      FROM      考试
                      WHERE     课程 = a.课程
                                AND 学号 a.学号
                                AND 成绩 > a.成绩
                    )         ) AS b
GROUP BY 课程

取分组第一第记录

表Demo的数据都是字符串类型,按照顺序的时间Time(也是字符串)排序的记录如下:

Num Name Time
1 a 2009/05/01
1 a 2009/05/02
1 a 2009/05/03
2 b 2009/05/04
2 b 2009/05/05
3 c 2009/05/06
3 c 2009/05/07
5 e 2009/05/08
1 a 2009/05/09
1 a 2009/05/10

我想输出类似按照Num分组的每组的第一条数据记录,比如上面的记录我想操作后得到如下记录:
Num Name Time
1 a 2009/05/01
2 b 2009/05/04
3 c 2009/05/06
5 e 2009/05/08
1 a 2009/05/09

sql代码

 代码如下 复制代码

declare @Tab table
(Num int, Name varchar(2),   Time DATETIME)
insert into @tab select 1    ,'a',        '2009/05/01'
insert into @tab select 1    ,'a',        '2009/05/02'
insert into @tab select 1    ,'a',        '2009/05/03'
insert into @tab select 2    ,'b',        '2009/05/04'
insert into @tab select 2    ,'b',        '2009/05/05'
insert into @tab select 3    ,'c',        '2009/05/06'
insert into @tab select 3    ,'c',        '2009/05/07'
insert into @tab select 5    ,'e',        '2009/05/08'
insert into @tab select 1    ,'a',        '2009/05/09'
insert into @tab select 1    ,'a',        '2009/05/10'

select  * from @Tab t where  not exists(select 1 from @Tab where num=t.num and [time]

/*
Num         Name Time
----------- ---- -----------------------
1           a    2009-05-01 00:00:00.000
2           b    2009-05-04 00:00:00.000
3           c    2009-05-06 00:00:00.000
5           e    2009-05-08 00:00:00.000

(4 行受影响)
*/


取分组最大记录


示例:test 表 a b c
  
  1 5 abc
  2 6 bcd
  1 7 ade
  2 8 adc
  若取按a列分组后,b列最大,的所有列的记录:
  
  result a b c
  1 6 bcd
  2 8 adc
  可以使用如下语句:
  

 代码如下 复制代码
  select * from test where b in (select max(id) from test group by a)
  适用于所有数据库:
  
  select t1.a,t1.b,t1.c
  from test t1
  inner join
  (seelct a,max(b) as b from test group by a) t2
  on t1.a=t2.a and t1.b=t2.b
  
  适用于所有数据库:
  
  select a,b,c
  from(
  select a,b,c
  ,row_number()over(partition by a order by b desc) rn
  from test
  )
  where rn=1
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Hibernate フレームワークにおける HQL と SQL の違いは何ですか? Apr 17, 2024 pm 02:57 PM

HQL と SQL は Hibernate フレームワークで比較されます。HQL (1. オブジェクト指向構文、2. データベースに依存しないクエリ、3. タイプ セーフティ)、SQL はデータベースを直接操作します (1. データベースに依存しない標準、2. 複雑な実行可能ファイル)。クエリとデータ操作)。

Oracle SQLでの除算演算の使用法 Oracle SQLでの除算演算の使用法 Mar 10, 2024 pm 03:06 PM

「OracleSQLでの除算演算の使用方法」 OracleSQLでは、除算演算は一般的な数学演算の1つです。データのクエリと処理中に、除算演算はフィールド間の比率を計算したり、特定の値間の論理関係を導出したりするのに役立ちます。この記事では、OracleSQL での除算演算の使用法を紹介し、具体的なコード例を示します。 1. OracleSQL における除算演算の 2 つの方法 OracleSQL では、除算演算を 2 つの異なる方法で実行できます。

Oracle と DB2 の SQL 構文の比較と相違点 Oracle と DB2 の SQL 構文の比較と相違点 Mar 11, 2024 pm 12:09 PM

Oracle と DB2 は一般的に使用される 2 つのリレーショナル データベース管理システムであり、それぞれに独自の SQL 構文と特性があります。この記事では、Oracle と DB2 の SQL 構文を比較し、相違点を示し、具体的なコード例を示します。データベース接続 Oracle では、次のステートメントを使用してデータベースに接続します: CONNECTusername/password@database DB2 では、データベースに接続するステートメントは次のとおりです: CONNECTTOdataba

MyBatis動的SQLタグのSetタグ機能の詳細説明 MyBatis動的SQLタグのSetタグ機能の詳細説明 Feb 26, 2024 pm 07:48 PM

MyBatis 動的 SQL タグの解釈: Set タグの使用法の詳細な説明 MyBatis は、豊富な動的 SQL タグを提供し、データベース操作ステートメントを柔軟に構築できる優れた永続層フレームワークです。このうち、Set タグは、UPDATE ステートメントで SET 句を生成するために使用され、更新操作でよく使用されます。この記事では、MyBatis での Set タグの使用法を詳細に説明し、特定のコード例を通じてその機能を示します。 SetタグとはMyBatiで使用するSetタグです。

math.Max 関数を使用して、一連の数値の最大値を取得します math.Max 関数を使用して、一連の数値の最大値を取得します Jul 24, 2023 pm 01:24 PM

math.Max 関数を使用して、一連の数値の最大値を取得します。数学やプログラミングでは、一連の数値の最大値を見つけることが必要になることがよくあります。 Go 言語では、数学パッケージの Max 関数を使用してこの関数を実現できます。この記事では、 math.Max 関数を使用して一連の数値の最大値を取得する方法と、対応するコード例を紹介します。まず、数学パッケージをインポートする必要があります。 Go 言語では、以下に示すように、import キーワードを使用してパッケージをインポートできます。

SQL の ID 属性は何を意味しますか? SQL の ID 属性は何を意味しますか? Feb 19, 2024 am 11:24 AM

SQL における Identity とは何ですか? 具体的なコード例が必要です。SQL では、Identity は自動インクリメント数値の生成に使用される特別なデータ型です。多くの場合、テーブル内のデータの各行を一意に識別するために使用されます。 Identity 列は、各レコードが一意の識別子を持つようにするために、主キー列と組み合わせてよく使用されます。この記事では、Identity の使用方法といくつかの実用的なコード例について詳しく説明します。 Identity の基本的な使用方法は、テーブルを作成するときに Identity を使用することです。

MySQL でデータの集計と統計に SQL ステートメントを使用するにはどうすればよいですか? MySQL でデータの集計と統計に SQL ステートメントを使用するにはどうすればよいですか? Dec 17, 2023 am 08:41 AM

MySQL でデータの集計と統計に SQL ステートメントを使用するにはどうすればよいですか?データの集計と統計は、データ分析と統計を実行する際の非常に重要な手順です。 MySQL は強力なリレーショナル データベース管理システムとして、データの集約と統計操作を簡単に実行できる豊富な集約機能と統計機能を提供します。この記事では、SQL ステートメントを使用して MySQL でデータの集計と統計を実行する方法を紹介し、具体的なコード例を示します。 1. カウントには COUNT 関数を使用します。COUNT 関数は最も一般的に使用されます。

SQL の 5120 エラーを解決する方法 SQL の 5120 エラーを解決する方法 Mar 06, 2024 pm 04:33 PM

解決策: 1. ログインしているユーザーがデータベースにアクセスまたは操作するための十分な権限を持っているかどうかを確認し、ユーザーが正しい権限を持っているかどうかを確認します; 2. SQL Server サービスのアカウントに指定されたファイルまたはデータベースにアクセスする権限があるかどうかを確認します。 3. 指定されたデータベース ファイルが他のプロセスによって開かれているかロックされているかどうかを確認し、ファイルを閉じるか解放して、クエリを再実行します。管理者として試してください。Management Studio をなどとして実行します。

See all articles