복붙노트

[SQL] MySQL은 여러 열에서 고유 값을 계산

SQL

MySQL은 여러 열에서 고유 값을 계산

나는 우리의 도메인에있는 컴퓨터에 때마다 사용자가 로그인을 실행하는 스크립트를 썼다. 이 스크립트는 사용자의 기록뿐만 아니라 그들이에 로그인 한 컴퓨터를한다. 사용자 임의의 수의 여러 컴퓨터에 로그인 할 수 있습니다.

난 그냥 주변에 더 이상 없다 컨설턴트에서이 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!)

해결법

  1. ==============================

    1.그냥 GROUP BY 절에 여러 열을 나열합니다.

    그냥 GROUP BY 절에 여러 열을 나열합니다.

    SELECT computer, user, count(*) AS count
    FROM login
    GROUP BY computer, user
    
  2. ==============================

    2.이 시도:

    이 시도:

    SELECT l.computer, l.user, COUNT(DISTINCT l.computer, l.user) AS count
    FROM login l 
    GROUP BY l.computer, l.user
    
  3. ==============================

    3.쉬운!

    쉬운!

    SELECT 
        computer, user, COUNT(DISTINCT computer, user) AS count
    FROM 
        login 
    
  4. from https://stackoverflow.com/questions/20809639/mysql-counting-distinct-values-on-multiple-columns by cc-by-sa and MIT license