ユーザーがドメイン内のコンピューターにログインするたびに実行するスクリプトを作成しました。このスクリプトは、ユーザーとログインしたコンピューターの記録を作成します。任意の数のユーザーが任意の数のコンピューターにログインできます。
私はこのIT環境をもはや存在しないコンサルタントから継承しました。この小さなクエリを書いているので、ユーザーから電話を受けたときに、そのユーザーの名前で検索し、どのコンピューターを使用しているかを合理的に予測できます特定のコンピューターにログインした回数。
「ログイン」テーブルのデータのサンプルを次に示します。
COMPUTER USER
ncofp02 lee
ncofp02 lee
ncofp02 andy
ncodc01 andy
ncodc01 andy
ncodc01 lee
私が注目しているのは、複数の列にわたって異なる値をカウントするロジックです。次のような結果が見たいです:
COMPUTER USER COUNT
ncofp02 lee (2)
ncofp02 andy (1)
ncodc01 lee (1)
ncodc01 andy (2)
Mysql内の単一のクエリでこれを達成する方法はありますか、またはPHPのループを開始する必要がありますか? (booooo!)
GROUP BY
句に複数の列をリストするだけです。
SELECT computer, user, count(*) AS count
FROM login
GROUP BY computer, user
これを試して:
SELECT l.computer, l.user, COUNT(DISTINCT l.computer, l.user) AS count
FROM login l
GROUP BY l.computer, l.user
簡単!
SELECT
computer, user, COUNT(DISTINCT computer, user) AS count
FROM
login