gpt4 book ai didi

sql - 第一列具有静态标签的两列 SQL 计数查询

转载 作者:行者123 更新时间:2023-12-04 06:25:33 24 4
gpt4 key购买 nike

我正在使用 Oracle 10g,我有一个名为 downloads 的表,它基本上如下所示:

ID     DOWNLOAD_DATE
1 2011-02-10
2 2011-03-10
3 2011-04-10
4 2011-05-10
5 2011-01-11
6 2011-04-22
7 2011-02-18
8 2011-03-14
9 2011-02-01
10 2011-01-31

等等。

我想执行一个返回以下内容的查询:
Downloads today
Downloads yesterday
Downloads from start date until today
Downloads on start date
Downloads on day after start date

我想在两列中打印结果。在第一列中,我想放置一个静态标签,就像上面的标签一样。在第二列中计数。

我试过这样的事情:
select count(id) from downloads where download_date = '2007-08-06'
union
select count(id) from downloads where download_date = '2007-08-08'

但这有两个问题。一,它只打印一列,即计数。二,如果给定日期(或日期范围)没有数据,则不打印任何内容。我需要打印一个零。

然后我尝试了这样的事情:
select download_date, count(download_date) from downloads where download_date = '2007-08-06'
group by download_date
union
select download_date, count(download_date) from downloads where download_date > '2007-08-08'
group by download_date

这将返回两列,但第一列不是静态的,它是数据库中的一个字段 (download_date)。更重要的是,它返回多行用于选择日期范围的查询(其中 download_date > '2007-08-08'),而我只想要一行及其计数。

我怎样才能做到这一点?

非常感谢,
鲍勃

最佳答案

首先。使用 Union All为了这。 Union 将删除双记录,在这种情况下这可能不是您想要的。这没什么关系,但 union all 也更快。 ;)

其次,我不明白为什么你不能只放一个静态标签,像这样:

select 'Look, static' from dual

然后,您可以编写这样的查询:
select 
'Downloads today' as Caption,
count(*) as DownloadCount
from
Downloads where trunc(download_date) = trunc(sysdate)
union all
select
'Downloads yesterday'
count(*)
from
Downloads where trunc(download_date) = trunc(sysdate) - 1

如果没有数据,Count 将打印 0。

关于sql - 第一列具有静态标签的两列 SQL 计数查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6078269/

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