LeetCode601-MySQL-체육관 사람 유동량
1876 단어 LeetCode.SQL
조회 문구를 작성하여 러시아워 시간대를 찾아내고 3일 이상 연속해야 하며 매일 인원 유동량이 100보다 적지 않다.
예를 들어 테이블
stadium
:+------+------------+-----------+
| id | date | people |
+------+------------+-----------+
| 1 | 2017-01-01 | 10 |
| 2 | 2017-01-02 | 109 |
| 3 | 2017-01-03 | 150 |
| 4 | 2017-01-04 | 99 |
| 5 | 2017-01-05 | 145 |
| 6 | 2017-01-06 | 1455 |
| 7 | 2017-01-07 | 199 |
| 8 | 2017-01-08 | 188 |
+------+------------+-----------+
위 예제 데이터의 출력은 다음과 같습니다.
+------+------------+-----------+
| id | date | people |
+------+------------+-----------+
| 5 | 2017-01-05 | 145 |
| 6 | 2017-01-06 | 1455 |
| 7 | 2017-01-07 | 199 |
| 8 | 2017-01-08 | 188 |
+------+------------+-----------+
1, 연속 3 일 및 이상 인구 100 - 3 표 이상
2. 3일 이상의 상황을 고려한다. 날짜 순서는 다음과 같다.
123
213
312
321
4가지
무슨 뜻이죠?
예를 들어 id=5, 6, 7, 8의 날짜에 대해 id가 6인 데이터가 표s1에 포지셔닝된다고 가정한다.
조건에 부합되는 5, 6, 7의 경우 그 위치는 2이다.
조건에 부합되는 6, 7, 8의 위치는 1이다.
만약 id=4도 100보다 많은 인원수에 부합한다면 조건에 부합되는 4, 5, 6의 위치는 3.
이들 4종(123·213·312·321)은 모든 상황을 담아 조건에 맞고 3일 이상 연속된 데이터를 넣기 위한 직관적 목적이 있다는 것이다.
So show you my code:
# Write your MySQL query statement below
SELECT DISTINCT s1.*
FROM stadium s1, stadium s2, stadium s3
WHERE s1.people >= 100 AND s2.people >= 100 AND s3.people>=100 AND
(
(s2.id-1=s1.id AND s3.id-1=s2.id AND s3.id-2=s1.id) OR
(s3.id-1=s1.id AND s1.id-1=s2.id AND s3.id-2=s2.id) OR
(s2.id-1=s1.id AND s1.id-1=s3.id AND s2.id-2=s3.id) OR
(S1.id-1=s2.id AND s2.id-1=s3.id AND s1.id-2=s3.id)
)
ORDER BY id
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
LeetCode182-MySQL - 중복 이메일 찾기SQL 질의를 작성하여 찾습니다Person 표의 모든 중복된 전자 우편함. 예: 위의 입력에 따라 쿼리는 다음 결과를 반환해야 합니다. 설명: 모든 전자 메일박스는 소문자입니다. 할 말 없어. So show you ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.