Sql 下面的查询是什么意思?
请参考以下用oracle编写的查询。谁能告诉我这个问题的意思吗Sql 下面的查询是什么意思?,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,请参考以下用oracle编写的查询。谁能告诉我这个问题的意思吗 select count(*) from dual connect by level <= 5 group by trunc(next_day(trunc(sysdate,'mm')-1, 'sunday') + (level -1)*7,'mm') 从dual connect by level中选择count(*)如果您检查group by子句返回的部件,则是当月的第一天,计算结果为以下第一个星期日: SQL> se
select count(*) from dual connect by level <= 5
group by trunc(next_day(trunc(sysdate,'mm')-1, 'sunday') + (level -1)*7,'mm')
从dual connect by level中选择count(*)如果您检查group by子句返回的部件,则是当月的第一天,计算结果为以下第一个星期日:
SQL> select trunc(sysdate, 'mm') trnc,
2 next_day(trunc(sysdate, 'mm') - 1, 'sunday') ne_day
3 from dual;
TRNC NE_DAY
---------- ----------
01.04.2021 04.04.2021
^
first Sunday in April 2021
connectby
子句返回5行。哪一个?当查询从只有一列(dummy
)且其值为'X'
的dual
中选择时,您不会看到太多。但是如果您检查GROUPBY
子句中的内容并选择这些值,您将得到
SQL> select trunc(next_day(trunc(sysdate,'mm')-1, 'sunday') + (level -1)*7,'mm')
2 from dual
3 connect by level <= 5;
TRUNC(NEXT
----------
01.04.2021 --> 4 rows of 1st of April 2021
01.04.2021
01.04.2021
01.04.2021
01.05.2021 --> 1 row of 5th of April 2021
SQL>
SQL> select count(*)
2 from dual
3 connect by level <= 5
4 group by trunc(next_day(trunc(sysdate,'mm')-1, 'sunday') + (level -1)*7,'mm');
COUNT(*)
----------
1 --> that's for 5th of April 2021
4 --> that's for 1st of April 2021
SQL>