0
다른 주제를 시도했지만 실제로 저에게 도움이되는 답을 얻을 수 없습니다. 은 내가 USER_ID 당, 특정 값까지 거리의 합까지 거리와 고도를 요약 할 필요가특정 값까지 합계
| id| user_id | elevation | distance |
|---|------------|--------------------|----------|
| 1 | 1 | 220 | 5000 |
| 2 | 1 | 300 | 7000 |
| 3 | 2 | 520 | 2000 |
| 4 | 2 | 120 | 3500 |
(MySQL의에서) 어떤 값으로 활동 테이블이 있습니다.
예, 5000까지 합에 도달 :
- 사용자 1 - 거리 5000 - 고도 220
- 사용자 2 - 나는 많은 솔루션을 발견 (640)
상승하지만 아무도과 - 거리 5500 group_by. 어떻게 내가 MySQL에서 이렇게합니까?
업데이트 : 이제는 그 쿼리를 사용했지만 다른 문제가 있습니다. 조인은 항상 삽입 순서를 사용하며 원하는 날짜/시간 필드가 아닙니다.
SELECT
t.*
FROM
(
SELECT
t.*,
(
@d := @d + DISTANCE
) AS running_distance
FROM
(
SELECT
t.*,
c.meta
FROM
inscricao i
INNER JOIN categorias c ON
i.categoria_id = c.id
LEFT JOIN(
select
t.data_inicio,t.usuario_id,t.aplicativo,t.data_fim,t.distance,t.tempo_decorrido,t.ritmo_cardiaco,t.velocidade_media,t.type,t.ganho_de_altimetria
from
corridas t
order by
data_inicio asc
) t ON
t.usuario_id = i.usuario_id
AND t.data_inicio >= i.inicio
AND t.data_fim <= i.fim
WHERE
i.desafio_id = 29
AND(
i.usuario_id = 5354
)
ORDER BY
data_inicio asc
-- usuario_id
) t
join (
SELECT
@u :=- 1,
@d := 0
) params
ORDER BY
data_inicio asc
) t
WHERE
(
running_distance >= meta * 1000
AND running_distance - DISTANCE < meta * 1000
)
OR(
running_distance <= meta * 1000
)
order by
data_inicio desc
따라서 이전 활동이 삽입되면 합계가 잘못됩니다. 누군가 그것을 처리하는 방법을 알고 있습니까?
왜 group_by를 사용해야합니까? – mypetlion
@mypetlion 사용자 ID 당 하나의 합계를 얻으려면 어떻게해야합니까? – Barmar
당신은 group_by와 함께 많은 솔루션을 찾았지만 아무 것도 찾지 못했다고하셨습니다. 나는 네가 의미하는 것을 몰랐다. 일반적으로 테이블에 대해 원하는 것을 수행 할 솔루션을 찾았지만 각 user_id에 대한 솔루션을 찾지 못했습니까? – mypetlion