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 スケジュール タスク バックアップ データを実装する方法

推薦する

一般的な MySQL 関数の例の概要 [集計関数、文字列、数値、時刻と日付の処理など]

この記事では、よく使用される MySQL 関数について説明します。ご参考までに、詳細は以下の通りです...

Linux でディスク IO を表示し、読み取りと書き込みで高い IO を占有するプロセスを見つけます。

背景 - オンラインアラートオンライン サーバーがアラームを発し、ディスク使用率 disk.util...

iframe 適応サイズ実装コード

ページドメインの関係:メインページ a.html はドメイン A: www.jb51.net に属し...

webpackを使用してTypeScriptコードをパッケージ化およびコンパイルする方法を教えます

TypeScript バンドルwebpack 統合通常、実際の開発では、ビルド ツールを使用してコー...

Dockerコンテナのデータを復元する方法

プロジェクトのテスト環境データベースのデータが失われてしまったので、記録しておきたいと思います。当時...

ラジオボタンとチェックボックス効果の純粋な CSS 実装例

ラジオボタンとチェックボックスラジオボタンとチェックボックスの効果を実現するための純粋な CSSラジ...

この構成ファイルの排他ロックに失敗したという VMware 仮想マシンのプロンプトの解決方法

VMware が異常シャットダウンした後、再起動すると「この構成ファイルを排他的にロックできませんで...

Vue Routerはバックグラウンドデータに応じて異なるコンポーネントをロードします

目次実際のプロジェクトで遭遇する要件実装が間違っているところもある私は個人的に、実装するより良い方法...

WeChatアプレットがジグソーパズルゲームを実装

この記事では、WeChatアプレットでジグソーパズルゲームを実装するための具体的なコードを参考までに...

HTML ドキュメントに CSS を埋め込む一般的な 3 つの方法

HTMLでCSSを定義するには、埋め込み、リンク、インラインの3つの方法が一般的に使用されます。 1...

MySQLの起動失敗の解決策

MySQLの起動失敗の解決策MySQLを起動できませんmysqlを停止した後、いくつかの操作(ホスト...

win2008 で mysql8.0.11 を mysql8.0.17 にアップグレードする詳細な手順

アップグレードの背景: MySQLの下位バージョンの脆弱性を解決するために、MySQLはMySQL ...

Linux コマンドラインでメールを送信する 5 つの方法 (推奨)

シェル スクリプトで電子メールを作成する必要がある場合は、コマンド ラインから電子メールを送信する知...

MYSQL での Truncate の使用法の詳細な説明

この記事のガイド: テーブル内のデータを削除するには、削除と切り捨ての 2 つの方法があります。TR...

MySQL バッチ SQL 挿入パフォーマンス最適化の詳細な説明

大量のデータを扱うシステムの中には、クエリ効率の低さやデータの保存時間の長さといったデータベースの問...