1. 需要3 つのテーブルがあります。一定期間にわたるさまざまな抗生物質感受性の結果、つまり report_item_drugs テーブルの drugs_result、さまざまなプロジェクト project_name およびさまざまな抗生物質 antibiotic_dict_name の割合を分類してカウントし、行に薬剤感受性の結果を表示する必要があります。効果は次のとおりです。 元の 3 つのテーブル (必須フィールドのみを例として挙げています) は次のとおりです。 報告書フォーム プロジェクトリスト 抗生物質テーブル(薬剤感受性結果 drugs_result は値の列です) 2. 実装1. プロジェクトと抗生物質グループ別に検出された症例の総数を計算する 選択 A.project_name、A.antibiotic_dict_name、SUM(nums) AS 検出総数 FROM ( SELECT i.project_name,d.antibiotic_dict_name,d.drugs_result,COUNT(d.id) AS nums FROM `report` r 右結合 report_item i ON r.id=i.report_id 右結合 report_item_drugs d ON d.report_item_id=i.id r.report_status=2 かつ r.add_date が '2020-01-01' から '2020-12-30' の間 i.project_id、d.antibiotic_dict_id、d.drugs_result でグループ化 )A GROUP BY A.プロジェクト名、A.抗生物質辞書名 2. プロジェクト、抗生物質、薬剤感受性結果に応じて、異なる薬剤感受性結果の数を計算する SELECT i.project_name,d.antibiotic_dict_name,IF(d.drugs_result<>'', d.drugs_result, '未入力') AS drugs_result,COUNT(d.id) AS quantity FROM `report` r 右結合 report_item i ON r.id=i.report_id 右結合 report_item_drugs d ON d.report_item_id=i.id r.report_status=2 かつ r.add_date が '2020-01-01' から '2020-12-30' の間 i.project_id、d.antibiotic_dict_id、d.drugs_result でグループ化 3. 2つの結果をリンクする 選択 BB.project_name、BB.antibiotic_dict_name、BB.drugs_result、BB.`quantity`、AA.`検出総数` から ( 選択 A.project_name、A.antibiotic_dict_name、SUM(nums) AS 検出総数 FROM ( SELECT i.project_name,d.antibiotic_dict_name,d.drugs_result,COUNT(d.id) AS nums FROM `report` r 右結合 report_item i ON r.id=i.report_id 右結合 report_item_drugs d ON d.report_item_id=i.id r.report_status=2 かつ r.add_date が '2020-01-01' から '2020-12-30' の間 i.project_id、d.antibiotic_dict_id、d.drugs_result でグループ化 )A GROUP BY A.プロジェクト名、A.抗生物質辞書名 ) AA 右結合 ( SELECT i.project_name,d.antibiotic_dict_name,IF(d.drugs_result<>'', d.drugs_result, '未入力') AS drugs_result,COUNT(d.id) AS quantity FROM `report` r 右結合 report_item i ON r.id=i.report_id 右結合 report_item_drugs d ON d.report_item_id=i.id r.report_status=2 かつ r.add_date が '2020-01-01' から '2020-12-30' の間 i.project_id、d.antibiotic_dict_id、d.drugs_result でグループ化 )BB ON AA.project_name=BB.project_name かつ AA.antibiotic_dict_name=BB.antibiotic_dict_name ここで、AA.`検出総数`<>' 4. 一般的に、異なる薬剤感受性の数と合計数は前のステップで入手できるため、比率を直接計算できます。 しかし、必要なのは薬剤感受性を行に表示することであり、比率を直接計算するだけでは要件を満たさないため、列を行に変換する必要があります。 行と列を変換する際にはcaseを使用し、薬物感受性の結果を辞書に従って読みやすい中国語の文字に変換します。 選択 C.project_name プロジェクト名、C.antibiotic_dict_name 抗生物質名、C.`検出総数`、 SUM(CASE C.`drugs_result` WHEN 'D' THEN C.`Quantity` ELSE 0 END ) AS '用量依存感度', CONCAT(SUM(CASE C.`drugs_result` WHEN 'D' THEN FORMAT(C.`Quantity`/C.`Total number of detections`*100,2) ELSE 0 END),'%') AS '用量依存感度比', SUM(CASE C.`drugs_result` WHEN 'R' THEN C.`Quantity` ELSE 0 END ) AS '薬剤耐性', CONCAT(SUM(CASE C.`drugs_result` WHEN 'R' THEN FORMAT(C.`Quantity`/C.`Total number of detections`*100,2) ELSE 0 END),'%') AS '薬剤耐性率', SUM(CASE C.`drugs_result` WHEN 'S' THEN C.`Quantity` ELSE 0 END ) AS 'Sensitive', CONCAT(SUM(CASE C.`drugs_result` WHEN 'S' THEN FORMAT(C.`Quantity`/C.`Total number of detections`*100,2) ELSE 0 END),'%') AS 'Sensitive ratio', SUM(CASE C.`drugs_result` WHEN 'I' THEN C.`Quantity` ELSE 0 END ) AS 'Agency', CONCAT(SUM(CASE C.`drugs_result` WHEN 'I' THEN FORMAT(C.`Quantity`/C.`Total Detection`*100,2) ELSE 0 END),'%') AS '中間比率', SUM(CASE C.`drugs_result` WHEN 'n1' THEN C.`quantity` ELSE 0 END ) AS 'non-sensitive', CONCAT(SUM(CASE C.`drugs_result` WHEN 'n1' THEN FORMAT(C.`Quantity`/C.`Total number of detections`*100,2) ELSE 0 END),'%') AS '非感受性比率', SUM(CASE C.`drugs_result` WHEN 'N' THEN C.`Quantity` ELSE 0 END ) AS 'None', CONCAT(SUM(CASE C.`drugs_result` WHEN 'N' THEN FORMAT(C.`Quantity`/C.`Total Detection`*100,2) ELSE 0 END),'%') AS '比率なし', SUM(CASE C.`drugs_result` WHEN '未記入' THEN C.`Quantity` ELSE 0 END ) AS '未記入', CONCAT(SUM(CASE C.`drugs_result` WHEN '未記入' THEN FORMAT(C.`数量`/C.`検出総数`*100,2) ELSE 0 END),'%') AS '未記入比率' から ( 選択 BB.project_name、BB.antibiotic_dict_name、BB.drugs_result、BB.`quantity`、AA.`検出総数` から ( 選択 A.project_name、A.antibiotic_dict_name、SUM(nums) AS 検出総数 FROM ( SELECT i.project_name,d.antibiotic_dict_name,d.drugs_result,COUNT(d.id) AS nums FROM `report` r 右結合 report_item i ON r.id=i.report_id 右結合 report_item_drugs d ON d.report_item_id=i.id r.report_status=2 かつ r.add_date が '2020-01-01' から '2020-12-30' の間 i.project_id、d.antibiotic_dict_id、d.drugs_result でグループ化 )A GROUP BY A.プロジェクト名、A.抗生物質辞書名 ) AA 右結合 ( SELECT i.project_name,d.antibiotic_dict_name,IF(d.drugs_result<>'', d.drugs_result, '未入力') AS drugs_result,COUNT(d.id) AS quantity FROM `report` r 右結合 report_item i ON r.id=i.report_id 右結合 report_item_drugs d ON d.report_item_id=i.id r.report_status=2 かつ r.add_date が '2020-01-01' から '2020-12-30' の間 i.project_id、d.antibiotic_dict_id、d.drugs_result でグループ化 )BB ON AA.project_name=BB.project_name かつ AA.antibiotic_dict_name=BB.antibiotic_dict_name ここで、AA.`検出総数`<>' )C GROUP BY C.プロジェクト名、C.抗生物質辞書名; 5. 結果を確認し、変換に成功する MySQL の行と列の変換のサンプルコードに関するこの記事はこれで終わりです。MySQL の行と列の変換に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: ブラウザでのjsのイベントループイベントキューの詳細な説明
この記事では、参考までに、Navicat for MySql の CSV ファイルのビジュアルインポ...
この記事では、参考までにEasy Notepadを実装するためのVueの具体的なコードを紹介します。...
<label> タグは、入力要素のラベル (タグ) を定義します。ラベル要素はユーザーに...
いわゆるファビコンは、Favorites Icon の略で、中国語ではウェブサイトアバターと呼ばれて...
MySQL ブール値、偽または真を格納つまり、データベースに保存されるブール値は 0 と 1 であり...
序文最近、小さなプログラムでリアルタイムにチャートを更新するという要件に遭遇しました。最初は wx-...
データベース操作を学び始めたばかりです。今日、データを保存していたところ、エラーが発生していることに...
JavaScriptでのランダムコードの生成と検証は参考までに。具体的な内容は以下のとおりです。イベ...
MySQLをインストールする6つの手順(インストールパッケージのみがインストール場所を選択できます)...
目次1. ミックスイン.scss 2. 単一ファイルの使用3. グローバルマウント3.1 依存関係の...
MariaDBをアンインストールするCentOS7 ではデフォルトで MySQL の代わりに Mar...
目次最初の方法: router-link (宣言型ルーティング) 2番目の方法: router.pu...
目次基本的な手順と使用方法行コンポーネントの分析レンダリング機能ソースコード分析Col成分の分析コン...
目次環境仮想マシンバージョンMySQL バージョン事前準備MySQLの実行ステータスを確認するルート...