簡體   English   中英

select如何按日期列分組數據? [ mysql ]

[英]How to select grouped data by date column? [ mysql ]

我有 3 個表, usersuser_spentsuser_incomes

  • user_spentsuser_incomes表包含每個日期的用戶活動。
  • 每個用戶在一個日期內可以有多項活動。 (例如, user可以在 2022-04-01 日期有多個支出或收入)。
  • 用戶必須在給定日期內spentincome不是強制性的

我想按日期對單個用戶的 select 活動進行分組和過濾。

Sql Fiddle Link 和 sql 到目前為止我嘗試了什么: http://sqlfiddle.com/#!9/846c851/1

我究竟做錯了什么? 你能給我什么建議嗎?

我想要實現的示例數據:

name    spent   income  date
----------------------------------
Jack    8       12      2022-04-01
Jack    4       56      2022-04-02
Jack    NULL    44      2022-04-03
Jack    7       NULL    2022-04-04

樣本數據。 (也包含在 sql 小提琴中)

Users Table:
id  name
1     Jack

User Spents:
id  user_id spent   date
1     1       2     2022-04-01
2     1       1     2022-04-01
3     1       5     2022-04-01
4     1       3     2022-04-02
5     1       1     2022-04-02

User Spents:
id  user_id income  date
1     1       44        2022-04-03
2     1       15        2022-04-02
3     1       41        2022-04-02
4     1       12        2022-04-01
5     2       54        2022-04-01

任何幫助將不勝感激。 謝謝。

您可以使用UNION ALL獲取user_spentsuser_incomes的所有行,然后加入users進行聚合:

SELECT u.id, u.name,
       SUM(t.spent) spent,
       SUM(t.income) income, 
       t.date
FROM users u
INNER JOIN (
  SELECT user_id, spent, null income, date FROM user_spents
  UNION ALL
  SELECT user_id, null, income, date FROM user_incomes
) t ON t.user_id = u.id
WHERE u.name = 'Jack' -- remove this condition to get results for all users
GROUP BY u.id, t.date;

請參閱演示

暫無
暫無

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

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