我想使用GROUP BY
并根据我自己的聚合函数选择一个类似于MIN
,MAX
等的值。
例如,根据以下数据,如果id
中的任何值为X
,我希望按GROUP BY
分组并获得X
可用性,否则返回?
如果包含......等等。
+------------+--------------+------+
| date | availability | id |
+------------+--------------+------+
| 2015-09-08 | Y | 1 |
| 2015-09-07 | Y | 1 |
| 2015-09-06 | X | 1 |
| 2015-09-05 | | 1 |
| 2015-09-04 | X | 1 |
| 2015-09-04 | Y | 2 |
| 2015-09-05 | Y | 2 |
| 2015-09-06 | Y | 2 |
| 2015-09-07 | Y | 2 |
| 2015-09-08 | Y | 2 |
| 2015-09-09 | ? | 2 |
+------------+--------------+------+
SELECT * FROM availability GROUP BY ID [....]
期望的输出:
+------------+--------------+------+
| date | availability | id |
+------------+--------------+------+
| 2015-09-08 | X | 1 |
| 2015-09-04 | ? | 2 |
+------------+--------------+------+
答案 0 :(得分:0)
您可以使用条件聚合执行此操作:
select id,
(case when sum(case when availability = 'X' then 1 else 0 end) > 0
then 'X'
else '?'
end)
from availability a
group by id;
你的问题没有说明日期的来源,所以我把它遗漏了。