gpt4 book ai didi

MySQL - 联合还是加入?

转载 作者:可可西里 更新时间:2023-11-01 08:00:28 26 4
gpt4 key购买 nike

我试图在一个 SQL 查询中收集统计数据,以便于在联合中自动对日期进行排序。它实际上只有一张表,但我想计算不同情况的数据。

我的表看起来像这样:

ID   In          Wanted
441 2011-03-14 0
439 2011-03-14 1
442 2011-03-14 0
428 2011-03-13 1
431 2011-03-13 1
425 2011-03-11 0
423 2011-03-11 1
420 2011-03-09 1

我通过这个查询接近期望的结果:

SELECT * FROM
(
(SELECT date(In) n, count(date(In)) cntw, null cntl FROM items i WHERE Wanted=1 group by date(In))
union all
(SELECT date(In) n, null cntw, count(date(In)) cntl FROM items i WHERE Wanted=0 group by date(In))
) Serie
Order by n DESC

但是关闭还不够:D 我得到的结果是这样的:

n            cntw   cntl
2011-03-14 null 2
2011-03-14 1 null
2011-03-13 2 null
2011-03-11 null 1
2011-03-11 1 null
2011-03-09 1 null

我想要的是按日期将结果“混合”在同一行上:

n            cntw   cntl
2011-03-14 1 2
2011-03-13 2 null
2011-03-11 1 1
2011-03-09 1 null

如您所见,每个日期只有一行。实际上,最完美的结果是连缺失的日期也包含在内:

n            cntw   cntl
2011-03-14 1 2
2011-03-13 2 null
2011-03-12 null null
2011-03-11 1 1
2011-03-10 null null
2011-03-09 1 null

...但我想这是不可能的。

谢谢!

最佳答案

select date(In) as n,
sum(case when wanted = 1 then 1 else 0 end) as cntw,
sum(case when wanted = 0 then 1 else 0 end) as cntl
from items
group by date(In)
order by n desc

关于MySQL - 联合还是加入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5300330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com