찾다

 >  Q&A  >  본문

날짜 시간 및 합계를 기준으로 MySQL 순위 지정

<p>구매 기록을 저장하는 데이터베이스가 있습니다. </p> <pre class="brush:php;toolbar:false;">| user_id 제품 | --------------------------- 1 | 1 | -0.75 | 2 | 1 | -0.75 | 3 | 2 | -0.65 | 2 | 1 | -0.75 | 1 | 1 | -0.75 | 1 | 3 | -1.50 | 1 | 2 | -0.65 | 2 | 1 | -0.75 | 3 | 2 | -0.65 | 3 | 3 | -1.50 | 3 | 3 | -1.50 |2022-01-02 |</pre> <p>N.B. 이 문제에서는 시간이 중요하지 않습니다. </p> <p>제가 원하는 것은 매일 각 사용자의 순위입니다. 예를 들어 사용자 1의 상황은 다음과 같습니다. </p> <pre class="brush:php;toolbar:false;">| 날짜시간 제품1 | 제품3 | ------------------------------------- ------------------ 2022-01-01 | 0 0 | 2022-01-02 | 1 | 2 | <p>순위는 매일 계산됩니다. </p> <p>다음 쿼리는 테이블의 일부를 제공합니다. </p> <pre class="lang-sql Prettyprint-override"><code>SELECT DATE(`datetime`) AS 날짜시간, SUM(CASE WHEN 제품 = 1 THEN 1 ELSE 0 END) AS 제품1, SUM(CASE WHEN 제품 = 2 THEN 1 ELSE 0 END) AS 제품2, SUM(CASE WHEN 제품 = 3 THEN 1 ELSE 0 END) AS 제품3, SUM(CASE WHEN 제품 = 1 THEN 0.75 ELSE 0 END)+SUM(CASE WHEN 제품 = 2 THEN 0.65 ELSE 0 END)+SUM(CASE WHEN 제품 = 3 THEN 1.5 ELSE 0 END) 합계, '역사'에서 user_id=1인 곳 날짜별 그룹(`datetime`) <p>내 문제는 MySQL 순위 문제와 매우 유사하지만 요청한 대로 정확한 결과를 얻을 수 없습니다. 하루에 모든 사용자만 순위를 매길 수 있습니다. 주어진 순위 함수를 추가하면 테이블을 보고 2022-01-02를 첫 번째로 입력합니다(2.90이 0.75보다 높기 때문입니다). 매일 순위가 작동하도록 하려면 어떻게 해야 하나요? </p>
P粉322319601P粉322319601454일 전548

모든 응답(1)나는 대답할 것이다

  • P粉707235568

    P粉7072355682023-09-02 00:07:31

    질문이 완전히 명확하지 않습니다. 하지만 귀하께서 질문하시는 것은 일별 모든 사용자의 구매 순위를 매기는 방법에 관한 것입니다.

    역사_날짜 사용자_ID 일일총액 총순위
    2022-01-01 2 1.50 1
    2022-01-01 1 0.75 2
    2022-01-01 3 0.65 3
    2022-01-02 3 3.65 1
    2022-01-02 1 2.90 2
    2022-01-02 2 0.75 3

    회신하다
    0
  • 취소회신하다