[英]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.