序文最近、レポート機能に取り組んでいたのですが、ある月に各部署に入社した人と退職した人の数をカウントする必要がありました。 私の歩みまず従業員数を調べる SELECT dept ,COUNT(1) rcNumber FROM employee table WHERE (Joining time!= '' または、参加日が NULL ではない) かつ DATE_FORMAT(参加日、'%Y-%m') = '2019-09' 部門IDによるグループ化 部門名で並べ替え クエリレコード 辞職した人数を照会する場合、SQL は次のようになります。 SELECT dept ,COUNT(1) rcNumber FROM employee table WHERE (退職日 != '' または、退職日が NULL ではない) かつ DATE_FORMAT(入社日、'%Y-%m') = '2019-09' 部門IDによるグループ化 部門名で並べ替え 結果セット 私が欲しいデータはこれです 私は次のことを試しました1. 2つのクエリ結果を2つのテーブルとみなし、左結合を使用します。正直、データ形式は私が望むものですが、右側のテーブルにレコードが多い場合、この方法を使用するとデータが少なくなるのではないでしょうか?(右側も同様) 2. 欲しいデータではないunion allを使って、2つの結果を直接加算し、垂直につなぎ合わせます。 3. select * from a,b を使用しました。結果は 2 つのテーブルの直積になります。 上記の方法の SQL は掲載しませんが、意味は明らかであるはずです。 信じられなかったので、Baiduに問い合わせ続けました。Baiduがようやく答えをくれたので、試してみました。 1. エントリSQLを次のように処理します。 SELECT a.dept,a.rcNumber,0 as lcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM employee table WHERE (Joining time!= '' または、参加日が NULL ではない) かつ DATE_FORMAT(参加日、'%Y-%m') = '2019-09' 部門IDによるグループ化 部門名で並べ替える)a 辞職SQLは次のように処理されます。 SELECT a.dept,a.lcNumber,0 as rcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM employee table WHERE (退職日 != '' または、退職日が NULL ではない) かつ DATE_FORMAT(入社日、'%Y-%m') = '2019-09' 部門IDによるグループ化 部門名で並べ替える)a 外側にレイヤーを追加したり、追加しなかったりすることもできます。私は、基本ステートメントを破壊しないように、元の SQL に追加するだけです。もちろん、これだけでは十分ではありません。 2. 2つの文を垂直に結合し、合計で結合します。 SELECT dept ,sum(cm_1) as rcNumber,sum(cm_0) as lcNumber FROM( SELECT c.id,c.dept,SUM(c.lcNumber) as cm_0,c.rcNumber as cm_1 FROM (SELECT a.dept,a.rcNumber,0 as lcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM 従業員テーブル WHERE (入社時間!= '' または、参加日が NULL ではない) かつ DATE_FORMAT(参加日、'%Y-%m') = '2019-09' 部門IDによるグループ化 ORDER BY 部門名) a) c GROUP BY c.dept ユニオンオール d.id、d.dept、d.lcNumberをcm_0として選択し、SUM(d.rcNumber)をcm_1として選択します。 (SELECT a.dept,a.lcNumber,0 as rcNumber FROM (SELECT dept ,COUNT(1) rcNumber FROM 従業員テーブル WHERE ( 退職時刻 != '' または quit_date が NULL ではない) かつ DATE_FORMAT(join_date, '%Y-%m') = '2019-09' 部門IDによるグループ化 ORDER BY 部門名) a) d GROUP BY d.dept) t GROUP BY t.dept ORDER BY t.id ついに望んでいた結果が得られました 要約するこれで、MySQL のマージ結果と水平スプライシング フィールドに関するこの記事は終了です。MySQL のマージ結果と水平スプライシング フィールドに関するより詳しい情報については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: CentOS/RHEL システムで VLAN タグ付きイーサネット カードを使用する方法
>>: JSは円形のプログレスバーのドラッグとスライドを実装します
VUE は vue-seamless-scroll を使用して、自動的にスクロールしていいねします。...
このとき、overflow:auto;(コードがコンテナの境界を超えたときにスクロールボックスを表示...
この記事では、物流タイムライン効果を実現するためのVueの具体的なコードを例として紹介します。具体的...
MERGE ストレージ エンジンは、MyISAM テーブルのグループを論理ユニットとして扱い、同時に...
背景色の点滅効果を実現するには、次のコードを <body> 領域に追加するだけです。コー...
1. 概要いわゆるライフサイクル機能とは、特定の条件下で自動的にトリガーされる機能です。 2. VU...
テーブルとは何ですか?テーブルは、データのキャリアである HTML テーブルです。以下は比較的標準的...
本日、ローカル開発環境で突然「入力ファイルが指定されていません」というエラーが発生してしまいました。...
機能別に並べ替えNN: このタグをサポートする Netscape の以前のバージョンを示しますIE:...
LOFTER のコンテストで、ログイン ボックスを再設計できると言及されているのを見ました。過去 2...
目次1. 次のように、「rpm -ivh インストール パッケージ」コマンドを使用して rpm パッ...
この記事では主に、次のように共有されるネイティブ JS 音楽プレーヤーのサンプル コードを紹介します...
サイト全体のフォントを設定することは、常にシンプルでありながら難しい作業です。深く掘り下げていくと、...
序文CentOS 環境変数設定ファイル システムは階層型システムであり、他のマルチユーザー アプリケ...
目次0x0 はじめに0x1 RBAC 実装0x2 クレームベースの承認0x3 統合 CASL 0x4...