Firebird 데이터베이스를 사용하고 있지만 대부분의 다른 데이터베이스 엔진의 SQL 구문을 사용하여 응답 할 수도 있습니다.group by을 (를) 사용하고 distinct를 선택하는 방법
WORKER
workerid: integer
worker names and so ot.
LOGEVENT
logeventid: integer
logday: integer
workerid: integer
따라서 LOGEVENT 테이블은 작업자 로그인을 추적하는 데 사용됩니다 :
나는 두 개의 테이블이있다. 그리고 간단히하기 위해 여기서 logday는 로그인 일을 나타내는 정수로 사용합니다. 예를 들어, 전형적인 로그 테이블처럼 보일 수 1 따라서 365
에 올해의 날이 될 수 있습니다 : ID로 작업자를 알 수있는 바와 같이
logeventid logday workerid
1 5 3
2 5 4
3 5 3
4 5 7
5 6 4
6 6 3
7 6 4
= 3 5 일에 두 로그인을했다 .
이제는 일일 총 로그인 수를 생성하는 SQL 쿼리를 작성해야합니다 (같은 요일에 같은 작업자가 여러 번 로그인 한 경우 하나의 이벤트로 계산해야 함).
다음 쿼리 :
select count(logeventid) as logincount, logday from logevent
group by logday
order by logday
는 5 일 대한 logincount = 4가 표시됩니다. 왜냐하면 그것은 id = 3 인 근로자를 두 번 계산했기 때문입니다. 나는 분명히 뚜렷한 노동자 로그인 만해야합니다. 따라서 5 일 동안 3 번의 로그인 만 생성하는 쿼리가 필요합니다.
질문을 재조정해야합니다. "고유 한 로그인 이벤트"는 정확히 "A. van Esveld"가 말한 것입니다. 동일한 또는 다른 사람이 문을 몇 번 지나쳤습니다. 문이 열릴 때마다 - 그것은 독특한 사건입니다. 당신이 필요로하는 것은 고유 로그인 이벤트 대신 하루에 얼마나 많은 다른 직원이 로그인했는지를 나타내는 것입니다. LiveJournal의 "social capital" –
나는 질문이 명확하게 설명되지 않았 음에 동의합니다. 그러나 나는 그 모범을 보였다. 예, 일일 총 로그인 수를 계산해야하지만 각 작업자는 하루에 한 번만 계산해야합니다. (이것은 두 번째 변형에서 "하루에 얼마나 많은 다른 직원이 로그인했는지"에서 잘 설명한 것입니다.). –
그런 다음 Q를 편집하고 다시 단어를 바꿔서 나중에 다른 사람들이 Google을 찾아서 찾을 수 있습니다 :-D –