簡體   English   中英

GROUP BY 用戶 ID 和 mysql 中的日期

[英]GROUP BY user id and day in mysql

我有這張桌子:

"SELECT id, DATE_FORMAT(date, '%d/%m/%y %H:%i') AS date, name, id_user, total_amount FROM CAJA"

我需要按 id_user 和 DAY 分組,只顯示有債務的用戶,所以我有這個查詢:

$st = $conn->prepare("SELECT id, DATE_FORMAT(date, '%d/%m/%y %H:%i') AS date, name, id_user, total_amount FROM CAJA WHERE active != 0 GROUP BY id_user, date ORDER BY id DESC");
$st->execute();
while($row = $st->fetch(PDO::FETCH_ASSOC)) { ....

但是顯示同一天分開的結果,我需要每天對所有用戶收據進行分組(因為每個用戶每天可以有多個收據),例如:

337 26/06/22 15:39  JOHN DOE1 // same user  
333 26/06/22 13:12  JOHN DOE1 // same user  
311 21/06/22 07:31  JANE DOE    
295 19/06/22 17:54  JOHN DOE2 // same user  
289 19/06/22 16:19  JOHN DOE2 // same user

date 是時間戳類型。

您的問題是您的date列還包括時間,因此您只會對同時發生的交易進行分組。 當您升級到 MySQL 5.7 或更高版本時,您還會遇到各種分組問題。 此查詢應為您提供所需的結果:

SELECT DATE_FORMAT(date, '%d/%m/%y') AS ddate,
       name, 
       id_user, 
       SUM(total_amount) AS total_amount
FROM CAJA 
WHERE active != 0 
GROUP BY id_user, name, ddate 
ORDER BY ddate DESC;

輸出(對於您問題中的示例數據):

ddate       total_amount    name        id_user
22/06/26    24.40           JOHN DOE1   1
22/06/21    12.50           JANE DOE    2
22/06/19    6.10            JOHN DOE2   3

db-fiddle上的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM