날짜 시간 및 합계를 기준으로 MySQL 순위 지정
P粉322319601
2023-09-01 08:49:20
<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>
질문이 완전히 명확하지 않습니다. 하지만 귀하께서 질문하시는 것은 일별 모든 사용자의 구매 순위를 매기는 방법에 관한 것입니다.