適用シナリオ: シールのさまざまな状態に応じて、さまざまな状態のシールの数をカウントする必要があります。 最初に 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コマンドは、特定のテーブルの詳細な設計情報を表示するために使用されます。 たとえば、ゲストブック テーブルのデザイン情報を表示するには、次のコマンドを使用します。
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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Windows 10 で Hyper-V サービスをシャットダウンするいくつかの方法
>>: Docker で Jenkins サービスを構築する例
序文Oracle であれ MySQL であれ、新バージョンで導入された新機能は、一方では製品の機能性...
Linux コンピュータには 2 つの時間があります。1 つはハードウェア時間 (BIOS に記録さ...
キーペアの分離1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。...
この記事の例では、参考までに簡単なカウントダウンを実装するためのjsの具体的なコードを共有しています...
いくつかの簡単な Linux コマンドを使用すると、ストレージまたは電子メールの添付ファイルのサイズ...
Hyper-V を展開するためのハードウェア要件は次のとおりです。 64 ビット プロセッサ、具体...
目次1. イベントのリスニング2. イベントパラメータを渡す3. イベント修飾子ケース1: クリック...
1. Nginxの同時実行性を最適化する [root@proxy ~]# ab -n 2000 -c...
1. Docker公式サイトにアクセスするまず、Dockerの公式ウェブサイトにアクセスして、最新の...
目次序文ブラウザにおけるオーディオとビデオに関する知識のまとめビデオエンコーディング包装形態オーディ...
コードをコピーコードは次のとおりです。 <フレームセット cols="*,1280,...
1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...
持つことの使用法having 句を使用すると、グループ化後にさまざまなデータをフィルター処理できます...
Windowsユーザー向けDocker で openGauss を使用するopenGaussイメージ...
プロジェクトを作成しているときに、ユーザーがアクションを実行し、特定の状態を変更し、ページを更新して...