【问题标题】:How to count value group by date and row value如何按日期和行值计算值组
【发布时间】:2015-07-14 07:22:47
【问题描述】:

我想统计每个月的评估分数。评价范围为1-5。我想在表格中向他们展示每个月每个评估的分数。这是数据。日期列采用以下格式:YYYY-MM-DD。

+-----------+---+---+---+---+---+
| date/eval | 5 | 4 | 3 | 2 | 1 |
+-----------+---+---+---+---+---+
|2015-06-01 | 10| 15| 2 | 3 | 0 |
+-----------+---+---+---+---+---+
|2015-06-02 | 20| 11| 5 | 4 | 1 |
+-----------+---+---+---+---+---+
|2015-06-03 | 5 | 10| 5 | 6 | 2 |
+-----------+---+---+---+---+---+
.
.
.
+-----------+---+---+---+---+---+
|2015-06-30 | 10| 15| 2 | 3 | 0 |
+-----------+---+---+---+---+---+

那我需要像这样在表格中显示数据。

+------------+---+---+---+---+---+
| date/eval  | 5 | 4 | 3 | 2 | 1 |
+------------+---+---+---+---+---+
|june 2015   |110|105| 32| 23| 0 |
+------------+---+---+---+---+---+
|july 2015   |132| 50| 21| 13| 0 |
+------------+---+---+---+---+---+
|august 2015 |151| 55| 42| 30| 0 |
+------------+---+---+---+---+---+

我能想到的所有sql脚本都是group by。但它只适用于按日期分组。

这是脚本:

select * from evaluation group by year,month(datetime) asc

如何计算每个评价的唯一值。

【问题讨论】:

  • 请发表结构evaluation
  • year 是什么?它是你桌子上的另一列吗?还是会派生自date 列?
  • 请看更新,我刚刚编辑过。

标签: mysql sql-server


【解决方案1】:

创建数据结构并填充测试数据:

CREATE TABLE evaluation (
  evaldate date NOT NULL,
  grade1 int(11) NOT NULL,
  grade2 int(11) NOT NULL,
  grade3 int(11) NOT NULL,
  grade4 int(11) NOT NULL,
  grade5 int(11) NOT NULL,
  PRIMARY KEY (evaldate)
);

INSERT INTO evaluation VALUES('2015-07-14', 1, 2, 3, 4, 5);
INSERT INTO evaluation VALUES('2015-07-15', 2, 2, 2, 2, 2);
INSERT INTO evaluation VALUES('2015-08-12', 5, 4, 3, 2, 1);
INSERT INTO evaluation VALUES('2015-08-13', 1, 1, 1, 1, 1);

执行您要执行的查询:

SELECT year(evaldate)
     , month(evaldate)
     , sum(grade1)
     , sum(grade2)
     , sum(grade3)
     , sum(grade4)
     , sum(grade5) 
  FROM evaluation 
 group 
    by year(evaldate)
     , month(evaldate);

返回:

year(evaldate) month(evaldate) sum(grade1) sum(grade2) sum(grade3) sum(grade4) sum(grade5)
2015           7               3           4           5           6           7
2015           8               6           5           4           3           2  

在我看来,这就像您正在寻找的结果,对吧?

【讨论】:

  • 这个答案太慷慨了。
猜你喜欢
  • 2021-05-06
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 2023-01-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多