나는 2 개의 테이블을 가지고 있습니다.MySQL : 가장 빠른 상승 점수를 가진 항목을 선택/정렬
+----+-------+------+
| id | name | user |
+----+-------+------+
| 1 | test | 25 |
| 2 | foo | 3 |
| 3 | bar | 12 |
| 4 | hello | 2 |
| 5 | world | 6 |
+----+-------+------+
두 번째는 점수를 포함
첫 번째
는 항목/제출이 포함되어 있습니다. 각 점수는 1에서 5 사이의 값을가집니다. 모든 항목에 점수가있는 것은 아닙니다. 내가 어떻게 "빨리"가 상승하고 기반으로 항목을 정렬하기 위해 노력하고있어+----+-------+-------+------+---------------------+
| id | score | entry | user | scored_date |
+----+-------+-------+------+---------------------+
| 1 | 4 | 1 | 5 | 2016-06-05 10:10:00 |
| 2 | 3 | 1 | 12 | 2016-06-05 10:20:00 |
| 3 | 5 | 3 | 6 | 2016-06-05 10:30:00 |
| 4 | 2 | 2 | 23 | 2016-06-05 10:40:00 |
| 5 | 3 | 2 | 46 | 2016-06-05 10:50:00 |
| 6 | 5 | 3 | 14 | 2016-06-05 10:60:00 |
| 7 | 6 | 3 | 32 | 2016-06-05 11:00:00 |
| 8 | 5 | 4 | 9 | 2016-06-05 11:10:00 |
| 9 | 1 | 2 | 4 | 2016-06-05 11:20:00 |
| 10 | 2 | 4 | 2 | 2016-06-05 11:30:00 |
| 11 | 4 | 2 | 18 | 2016-06-05 11:40:00 |
| 12 | 5 | 1 | 8 | 2016-06-05 11:50:00 |
| 13 | 3 | 2 | 32 | 2016-06-05 12:00:00 |
| 14 | 4 | 1 | 28 | 2016-06-05 12:10:00 |
+----+-------+-------+------+---------------------+
(표준 날짜 값으로 'DATETIME을'가정). 좋은 예가 threadless.com과 같은 웹 사이트의 "상승"목록입니다. https://www.threadless.com/threadless/designs?status=open&sort=rising
현재 시간 가정 : 12:30:00 예상되는 결과는 "상승"으로 정렬됩니다. 아마도 지난 시간 (11시 30분 0초에서 12시 30분 0초까지)를 기반으로 - 등
Entry table results (Last 1 hour 11:30:00 - 12:30:00)
+----+-----------+
| id | score_sum |
+----+-----------+
| 1 | 9 |
| 2 | 7 |
| 4 | 2 |
| 3 | 0 |
| 5 | 0 |
+----+-----------+
Entry table results (Last 2 hour 10:30:00 - 12:30:00)
+----+-----------+
| id | score_sum |
+----+-----------+
| 3 | 16 |
| 2 | 13 |
| 1 | 9 |
| 4 | 7 |
| 5 | 0 |
+----+-----------+
내가 여러 추측하고있어, 2 시간 (12시 30분 0초 10시 30분 0초를) 지속 지난 1 시간 동안 점수가 없거나 지난 3 시간 동안 2 점이 있었지만 과거 5 시간 동안 100 점이 있었기 때문에 시간 프레임이 필요할 수 있습니다. 따라서 지난 1 시간의 결과는 정확하지 않거나 덜 의미가 있습니다.
전제가 주어지면 이러한 SQL 문 뒤에있는 논리를 이해할 수 없습니다. 나는 또한 서로 다른 시간대를 결합하여 어떻게 결과를 명확하고 미성년자로 만들 수 있는지 확신 할 수 없다.
모든 의견을 크게 환영합니다!
나는 해결책을 얻지 만, 2 시간짜리에 대해 2 가지 별도의 쿼리가 필요했습니다. 논리적으로 결합하는 방법이 있습니까? 지난 1 시간 동안의 점수가 "체중"이 더 많고, 다음 시간의 점수가 덜한 등등 (최대 6 시간 간격) –
편집을 보았습니다. CAST ('2016-06-05 11:00:00'AS DATETIME)를 DATE_SUB (NOW(), INTERVAL 2 HOURS)로 변경하면 의미가 있습니까? –
@MikeFeng - 나는 그것이 맞는 것 같아요 : 그것은 당신의 비즈니스 규칙입니다. 샘플 데이터에서 찾은 날짜/시간 값을 기반으로 한 기술을 보여주기 위해 상수를 사용해야했습니다. – AgRizzo