MySQLを使用して列内の異なる値の数をカウントする例

MySQLを使用して列内の異なる値の数をカウントする例

序文

この記事で実装されている要件は、実際には非常に一般的です。たとえば、ユーザーが登録したチャネルをマークするためのユーザー ソース テーブルがあります。テーブル構造は以下のようになります…

Origin はユーザーのソースであり、その値には iPhone、Android、Web が含まれます。ここで、これら 3 つのチャネルで登録されたユーザーの数を個別にカウントする必要があります。

解決策1

SELECT カウント(*)
user_operation_log から
origin = 'iPhone';
SELECT カウント(*)
user_operation_log から
origin = 'Android'; の場合
SELECT カウント(*)
user_operation_log から
ここで origin = 'Web';

where ステートメントを使用して、それぞれの数量をカウントします。

これはクエリが多すぎます。値が 10 個ある場合は、同様のステートメントを 10 個記述する必要があり、非常に面倒です。

それを実行できる単一のステートメントはありますか?そこで情報を調べに行きました。

解決策2

count は行の数を数えるだけでなく、列の値の数を数えるのにも使用できることがわかっています。次に例を示します。

user_operation_log の行数を数えます:

user_operation_logからcount(*)を選択します

元の列にあるNULLではない値の数を数えます。

user_operation_log から count(origin) を選択

この機能を使用して上記の要件を達成することができます

最初の書き方(countを使用)

選択
 count(origin = 'iPhone' OR NULL) AS iPhone、
 count(origin = 'Android' OR NULL) AS Android、
 count(origin = 'Web' OR NULL) AS Web
user_operation_log から;

クエリ結果

2番目の書き方(sumを使用)

選択
 sum(if(origin = 'iPhone', 1, 0)) AS iPhone、
 sum(if(origin = 'Android', 1, 0)) AS Android、
 sum(if(origin = 'Web', 1, 0)) AS Web
user_operation_log から;

クエリ結果

3番目の書き方(書き直し合計)

選択
 sum(origin = 'iPhone') AS iPhone、
 sum(origin = 'Android') Androidとして、
 sum(origin = 'Web') AS Web
user_operation_log から;

クエリ結果

4番目の書き方(NuggetsユーザーのJeffの回答より)

SELECT origin,count(*) num FROM user_operation_log GROUP BY origin;

クエリ結果


これまでのところ、私たちのニーズは満たされています。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。

以下もご興味があるかもしれません:
  • MySQL で行を列に変換したり、列を行に変換したりする詳細な例
  • MYSQLデータベースの既存のテーブルに新しいフィールド(列)を追加する
  • MySQL でクエリ結果にシリアル番号を追加する方法
  • MySQLを使用して列内の同一値の数を照会する方法
  • Mysql のデータベースのすべてのテーブル名、列名、データ型メモを返します。
  • MySQL は、テーブルの列や制約などを追加、変更、削除します。
  • 行と列の変換のデータベース実装 (mysql の例)
  • MySQL ストアド プロシージャで動的な行から列への変換を使用する
  • MySQL の列から行への変換、フィールドの結合方法 (必読)
  • MySQLで列の値を列に変換する方法
  • MySQL 5.7 生成列の使用例の分析

<<:  リンクされた画像をダウンロードしてアップロードするJavaScriptの実装

>>:  Linux で MySQL スケジュール タスク バックアップ データを実装する方法

推薦する

Vue+Openlayerはグラフィックスのドラッグと回転変形効果を実現します

目次序文関連資料成果を達成する実装手順序文Openlayer には独自の拡張プラグイン ol-ext...

nginx で同時接続リクエストの数を制限する方法

導入同時接続数を制限するモジュールは http_limit_conn_module です。アドレス:...

Vue コンポーネントの構成構造とコンポーネント登録の詳細

目次1. コンポーネントの構成2. コンポーネント名2.1 コンポーネントの命名3. グローバル登録...

React Fragment の紹介と詳しい使い方

目次序文フラグメントの動機React Fragment の紹介と使用<React.Fragme...

MySQL 5.7 でブロックポジショニング DDL の問題を解決する

前回の記事「MySQL テーブル構造の変更、メタデータ ロックを知っておく必要があります」では、MD...

Nginx プロキシ転送構成を通じてクロスドメイン API プロキシ転送を実装する方法

序文WEB 開発では、クロスドメイン リクエストが頻繁に発生します。クロスドメインの問題を解決する方...

Reactでコンポーネントロジックを共有する3つの方法

簡単に説明すると、これら 3 つの方法は、レンダリング プロップ、高階コンポーネント、カスタム フッ...

MySQL 20 の高性能アーキテクチャ設計原則 (収集する価値あり)

オープンソース データベース アーキテクチャの設計原則01. 技術の選択最も使い慣れていて、最大限に...

HTML のセルパディングとセルスペース属性を図で説明します

セル - 表の内容 セルの余白 (表の余白) (cellpadding) - セルの外側の距離を表し...

TypeScript を使用して Vue3 で axios をカプセル化する詳細な例

この axios パッケージは、vue3 デモで使用されます。便宜上、element-plus は ...

MySQL における主キーが 0 であることと主キーの自己選択制約の関係についての詳しい説明 (詳細)

序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...

DockerにMySQLをインストールする方法

最近 Django を導入しましたが、MySQL を手動でインストールしたくなかったので、Docke...

docker を使用して Linux 環境に Springboot パッケージをデプロイするチュートリアル

springboot には tomcat サーバーが組み込まれているため、jar パッケージにパッケ...

MySQLで行を列に変換する方法

MySQL の行から列への操作いわゆる行から列への操作は、テーブルの行情報を列情報に変換することです...

HTML_PowerNode Java アカデミーでテーブルを動的に追加する

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <html> <...