【问题标题】:Need MYSQL database query solution需要MYSQL数据库查询解决方案
【发布时间】:2022-01-14 04:03:16
【问题描述】:

在 MySQL 中,我有下表:

date work code
2022-01-01 11:41:24 10 1
2022-01-01 10:41:24 10 1
2022-01-03 09:41:24 0 0
2022-02-04 06:41:24 10 1
2022-02-05 05:41:24 40 1

我的 SQL 代码:

SELECT extract(MONTH FROM date) AS month, count(number) AS sum_number FROM be WHERE code='1' group by month

这是这段代码的结果:

结果

month sum_work
1 20
2 50

我怎样才能得到这个结果,我需要在我的查询中改变什么?

work_days:每个月他们工作了多少天

最终结果:

month work_days sum_work
1 1 20
2 2 50

【问题讨论】:

  • edit 告诉我们workd_days 列的含义。

标签: mysql date group-by count distinct


【解决方案1】:

您必须计算不同的日期:

SELECT MONTH(date) AS month,   
       COUNT(DISTINCT DATE(date)) AS work_days, 
       COUNT(*) AS sum_number -- or SUM(work) as your expected result
FROM be 
WHERE code='1' 
GROUP BY month;

【讨论】:

  • 谢谢!如果我想将 work_days 的结果乘以 10,还有一个问题?我应该在哪里添加它?
  • @TóthLászló 10 * COUNT(DISTINCT DATE(date)) 会起作用。
【解决方案2】:

如果我对您的要求的猜测是正确的,您希望每个月的天数有一条或多条记录。

你可以试试这样的:

SELECT LAST_DAY(date) AS month_ending, 
       COUNT(number) AS sum_number
       COUNT (DISTINCT DATE(date)) AS workd_days
  FROM be 
  WHERE code='1'
 GROUP BY LAST_DAY(DATE)

LAST_DAY(date) 是比 EXTRACT(MONTH FROM date) 更好的选择,因为 2021-01-062022-01-06 都从后者返回 1。

【讨论】:

    猜你喜欢
    • 2013-03-22
    • 2010-09-22
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    相关资源
    最近更新 更多