星期六和星期日的行数总和

时间:2014-11-05 21:25:24

标签: sql oracle

我正试图从星期六或星期天的表中获取行数。

以下代码无效。

知道怎么做到这一点?

SELECT next_day(sysdate-8, 'SUN') from dual;

NEXT_DAY(SYSDATE-8,)
-------------------
2014/11/02 21:22:30

我的尝试:

select sum(QTY),GROUP from table where next_day(order_date-8, 'SUN')  group by GROUP;

2 个答案:

答案 0 :(得分:2)

要仅过滤星期日/星期六,您可能需要TO_CHAR()

select sum(QTY),GROUP
from table
where TO_CHAR(order_date,'DY', 'NLS_DATE_LANGUAGE=AMERICAN') in ('SUN','SAT')
group by GROUP;

答案 1 :(得分:0)

我认为您可以使用NEXT_DAY()函数,如下所示:

SELECT SUM(qty), group
  FROM table
 WHERE order_date = NEXT_DAY(order_date - 1, 'SAT')
    OR order_date = NEXT_DAY(order_date - 1, 'SUN')
 GROUP BY group

如果order_date列上有索引,那么甚至可以避免全表扫描。我只是在一个类似的表上尝试过并使用上面的TO_CHAR()方法进行全表扫描,而在这里使用此方法我在日期列上完整扫描了索引。