SQLで同じフィールドの異なる値のデータ統計を実行する

SQLで同じフィールドの異なる値のデータ統計を実行する

適用シナリオ: シールのさまざまな状態に応じて、さまざまな状態のシールの数をカウントする必要があります。

最初に Baidu で検索したときは、確かにさまざまな回答が見つかりました。しかし、SQL 構文を十分に理解せず、書き出せなかったために、次のような誤った書き方になってしまったのは、私自身の責任だとしか思えません。

b.corporateOrgName、b.corporateOrgGuid companyId を選択、
count(case bc.ftype が(1,2)に含まれない場合は1、そうでない場合は0、end) 合計、
count(case when bc.ftype in(3,4,5) then 1 else 0 end) usetotal,
count(case when bc.ftype = 6 then 1 else 0 end) saveTotal,
count(case when bc.ftype = 7 then 1 else 0 end ) returnTotal
B_seal_cycle から bc
B_seal bに参加
bc.sealId = b.id の場合
b.corporateOrgName は '%%' のようになります
b.corporateOrgName、b.corporateOrgGuid でグループ化

ロジックは理にかなっています。しかし、理想的なインターフェースを実現できないため、書き込まれる統計データはすべて同じになります。変更後の正しいスペル

b.corporateOrgName、b.corporateOrgGuid companyId を選択、
count(case when bc.ftype not in(1,2) then 1 end ) total、
count(case when bc.ftype in(3,4,5) then 1 end ) usetotal、
count(bc.ftype = 6 の場合 1 終了) saveTotal、
count(case when bc.ftype = 7 then 1 end ) returnTotal
B_seal_cycle から bc
B_seal bに参加
bc.sealId = b.id の場合
b.corporateOrgName は '%%' のようになります
b.corporateOrgName、b.corporateOrgGuid でグループ化

違いが分かりますか? else 0 を削除すると正しい結果が得られます。

発生した問題

1. 構文が正しくない場合のケースの解釈。

else を追加すると、結果は常に 1 または 0 になります。

2. count関数は1か0かをカウントします。

3. else 0を追加した後、sum関数を使用して統計を実行できます。

次のように書くこともできます

b.corporateOrgName、b.corporateOrgGuid companyId を選択、
sum(case when bc.ftype not in(1,2) then 1 else 0 end ) 合計、
sum(case when bc.ftype in(3,4,5) then 1 else 0 end ) usetotal,
sum(case when bc.ftype = 6 then 1 else 0 end ) saveTotal、
sum(case when bc.ftype = 7 then 1 else 0 end ) returnTotal
B_seal_cycle から bc
B_seal bに参加
bc.sealId = b.id の場合
b.corporateOrgName は '%%' のようになります
b.corporateOrgName、b.corporateOrgGuid でグループ化

ご質問やより良い書き方がありましたら、メッセージを残してください。

追加知識: SQL 言語でステートメント DESC と DESCRIBE を実行する場合の違いは何ですか?

DESCRIBE TABLE は、指定されたテーブルまたはビュー内のすべての列を一覧表示するために使用されます。

DESCRIBE INDEX FOR TABLE は、指定されたテーブルのすべてのインデックスを一覧表示するために使用されます。

したがって、DESCRIBE はデータ構造情報を表示するために使用されます。

Desc は子孫を意味し、クエリ時に結果を降順で並べ替えるために使用されます。

DESCRIBE は SHOW COLUMNS FROM の略語です。

DESCRIBE は、テーブルの列に関する情報を提供します。 col_name には、列名、または SQL ワイルドカード文字「%」と「_」を含む文字列を指定できます。文字列を引用符で囲む必要はありません。

1. describeコマンドは、特定のテーブルの詳細な設計情報を表示するために使用されます。

たとえば、ゲストブック テーブルのデザイン情報を表示するには、次のコマンドを使用します。

ゲストブックの説明 ol_user ユーザーIDの説明

2. 「show comnus」でデータベース内のテーブルの列名を表示できます。

使用方法は2つあります:

データベース名からテーブル名の列を表示する

または:

データベース名.テーブル名の列を表示する

3. 特定の列情報を照会するにはdescribeコマンドを使用します。

ゲストブックIDの記述は、ゲストブックのIDフィールドの列情報を照会することです。

{説明 | 
説明
} tbl_name [col_name | ワイルド]

DESCRIBE は SHOW COLUMNS FROM の略語です。

DESCRIBE は、テーブルの列に関する情報を提供します。 col_name には、列名、または SQL ワイルドカード文字「%」と「_」を含む文字列を指定できます。文字列を引用符で囲む必要はありません。

マイSQL> 
説明
ol_user ユーザー名\G

4. フィールドが存在するかどうかを判断する

mysql_connect() 関数は、
'ローカルホスト'  
、   
'根'  
、   
'根'   
);
   
mysql_select_db(   
'デモ'   
); 
$テスト = mysql_query(
「まずcdb_postsについて説明してください」
); 
$test = mysql_fetch_array($test);

$test[0]はフィールドの名前を返します。たとえば、最初のフィールドを照会する場合、返される値は first になります。

このフィールドが存在しない場合は、NULL が返されます。これにより、フィールドが存在するかどうかを判断できます。

SQL で同じフィールドの異なる値に対してデータ統計操作を実行する方法に関する上記の記事は、編集者が皆さんと共有するすべての内容です。 皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL の複数のレコードの同じフィールドを異なる値に一括更新する方法
  • 1 つ以上のフィールドに基づいて重複データを検索する MySQL SQL ステートメント
  • MySQLテーブル内の重複データをクエリする方法

<<:  Windows 10 で Hyper-V サービスをシャットダウンするいくつかの方法

>>:  Docker で Jenkins サービスを構築する例

推薦する

Element-ui NavMenuサブメニューを使用して再帰的に生成する場合のエラーの詳細な説明

ナビゲーションバーのサブメニューを再帰的に生成すると、メニューは正常に生成できるが、マウスをホバーす...

CSS で垂直方向の中央揃えを行う 7 つの方法の詳細なコード例

レイアウトを編集するとき、通常は水平センタリングと垂直センタリングを使用してデザインします。水平セン...

よく使われる Docker コマンドと例の概要と分析

目次1. コンテナライフサイクル管理(1)ドッカー実行(2)スタート/ストップ/リスタート(3)ドッ...

Vueタブとキャッシュページを切り替えるいくつかの方法

目次1. 切り替え方法2. タブを動的に生成する3. キャッシュコンポーネント3.1 キープアライブ...

Bash の山括弧の深い理解 (初心者向け)

序文Bash には、ls、cd、mv などの重要な組み込みコマンドが多数あるほか、grep、awk、...

MySQLでビューを作成する方法

基本的な構文CREATE VIEW ステートメントを使用してビューを作成できます。構文の形式は次のと...

Bash スクリプトでの配列メソッドの作成と使用の概要

Bashで配列を定義するbash スクリプトで新しい配列を作成する方法は 2 つあります。 1 つ目...

CSS3で実装された読み込みアニメーション

成果を達成する実装コード <h1>123WORDPRESS.COM</h1>...

LeetCode の SQL 実装 (175. 2 つのテーブルの結合)

[LeetCode] 175.2つのテーブルを結合する表: 人物+-------------+--...

シンプルで簡単なJavaScript開発のためのSvelte実装原理の詳細な説明

目次デモ1フラグメントの作成スヴェルトコンポーネント状態を変更できるデモSvelte は長い間存在し...

MySQL 高可用性クラスタの展開とフェイルオーバーの実装

目次1. 内閣府1. コンセプト2. MHAの構成3. MHAの特徴2. MySQL+MHAをビルド...

CSSを使用してアダプティブスクエアを実装する方法の例

伝統的な方法は、正方形を固定形式で書くことです。長さ=幅を直接書き、次のように固定値を書きます。 。...

Hbase 入門

1. HBaseの概要1.1 HBaseとはHBase は、高い信頼性、高いパフォーマンス、列ストレ...

MySQL インデックス失敗の原理

目次1. インデックス失敗の理由2. インデックスの秩序が崩れる状況を見てみましょう。 - インデッ...

MySQLのスリープ関数の特殊現象例の詳しい説明

序文MySQL のスリープ システム機能は、実用的な適用シナリオが少なく、通常は実験的なテストに使用...