两列上的MySQL分组依据
我有一张这样的桌子两列上的MySQL分组依据,mysql,sql,Mysql,Sql,我有一张这样的桌子 +---------------------+-------+-----+ | dateTime | value | id | +---------------------+-------+-----+ | 2013-04-06 06:54:00 | 2.5 | 1 | | 2013-04-06 06:55:00 | 2.9 | 2 | | 2013-04-06 06:56:00 | 2.4 | 3 | | 2013-04-06
+---------------------+-------+-----+
| dateTime | value | id |
+---------------------+-------+-----+
| 2013-04-06 06:54:00 | 2.5 | 1 |
| 2013-04-06 06:55:00 | 2.9 | 2 |
| 2013-04-06 06:56:00 | 2.4 | 3 |
| 2013-04-06 06:57:00 | 2.6 | 4 |
| 2013-04-06 06:58:00 | 2.5 | 5 |
| 2013-04-06 06:59:00 | 2.6 | 6 |
| 2013-04-06 06:54:00 | 2.8 | 7 |
| 2013-04-06 06:55:00 | 2.5 | 8 |
| 2013-04-06 06:56:00 | 2.1 | 9 |
+---------------------+-------+-----+
我想在两列上应用GROUPBY,但下面的查询对我不起作用
SELECT * FROM table GROUP BY dateTime, value
我希望两列的值都不同。
我也试过这个,但这个也不行
SELECT distinct(dateTime),value,id FROM table GROUP BY value
我希望每一列都是唯一的。
我期望的输出是
+---------------------+-------+-----+
| dateTime | value | id |
+---------------------+-------+-----+
| 2013-04-06 06:54:00 | 2.5 | 1 |
| 2013-04-06 06:55:00 | 2.9 | 2 |
| 2013-04-06 06:56:00 | 2.4 | 3 |
| 2013-04-06 06:57:00 | 2.6 | 4 |
+---------------------+-------+-----+
有人能帮我吗?
感谢使用分组谓词时,所选值必须为 用于对结果进行分组的值 b组函数,如总和、平均值、计数 做点像
SELECT dateTime, value FROM table GROUP BY dateTime, value (order is not needed to be kept).
SELECT dateTime, value FROM table GROUP BY value
如果你做了类似的事情
SELECT dateTime, value FROM table GROUP BY dateTime, value (order is not needed to be kept).
SELECT dateTime, value FROM table GROUP BY value
您可以以一个表结束,其中,对于值为1的行,您将有3个或4个不同的日期时间值。而且这不是一个表,因此SQL将无效。如果希望两列都是唯一的,可以使用GROUP或DISTINCT: 明显的 从表中选择不同的日期时间、值 分组
你的问题不够清楚,所以让我这样问 对于任何给定的日期/时间,如果存在多个条目,则需要它第一次出现时的值和ID。您的示例输出没有关于:58和:59分钟条目的任何输出,因此我假设您不希望任何输出只有一条记录
select
YT2.dateTime,
YT2.value,
YT2.ID
from
( select YT.dateTime, min(YT.id) MinID
From YourTable YT
group by YT.dateTime
having count(*) > 1 ) as PreQuery
JOIN YourTable YT2
ON PreQuery.MinID = YT2.ID
AND PreQuery.dateTime = YT2.dateTime
现在,如果希望基于具有最低值的日期/时间进行查询,则只需将上述查询更改为
( select YT.dateTime, min(YT.Value) MinValue
及
你可以试试这个
按日期时间从表组中选择dateTime、maxvalue
这将为每个不同的dateTime提供一行,该dateTime组的最大值为。您可以使用“最大”的替代项,例如“最小”或“求和”
如果不确切知道您想要实现什么,就很难给出更准确的答案。如果您需要在两列中都有唯一的值,请排除在前几行中返回了日期时间或值的行,请尝试此查询 从测试a中选择a.datetime、a.value、a.id 不存在的地方 从测试b中选择1 其中b.id