簡體   English   中英

按日期分組時如何使MySQL返回空日?

[英]How to make MySQL return empty day when doing a group by date?

我有一個這樣的MySQL查詢:

SELECT DAYNAME(CreatedAt) AS TheDay, SUM(Amount) AS TheSum
FROM OrderTransactions
GROUP BY TheDay

# Returns an array like:
# Array
# (
#     [0] => Array
#         (
#             [TheDay] => Thursday
#             [TheSum] => 0.02
#         )
# 
#     [1] => Array
#         (
#             [TheDay] => Wednesday
#             [TheSum] => 0.02
#         )
# 
# )

我那里還有一個子句,只選擇上周的交易。 如果某些日期沒有交易,我如何仍能使它在每個空白日都返回0.00美元的金額?

通常,此處的技術是UNION,與您選擇的相反。

假設您有一個表日name ,字段name的值是'Monday','Tuesday'...'Sunday'。

SELECT DAYNAME(CreatedAt) AS TheDay, SUM(Amount) AS TheSum
  FROM OrderTransactions
  GROUP BY TheDay
UNION
SELECT `name`, 0 FROM daynames
  WHERE daynames.name NOT IN (SELECT DISTINCT DAYNAME(CreatedAt) FROM OrderTransactions) 

如果沒有日期功能,通常不需要日期名稱查找表。 在這種情況下,我不知道避免這種情況的捷徑。

暫無
暫無

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

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