我有一张桌子
JobID Date_of_Completion Region day
1 23/05/2016 South monday
2 23/05/2016 north monday
3 23/05/2016 north monday
4 23/05/2016 east monday
5 22/05/2016 South sunday
6 22/05/2016 north sunday
7 22/05/2016 south sunday
8 22/05/2016 east sunday
.
.
.
..
23 2/05/2016 north monday
24 2/05/2016 east monday
25 2/05/2016 South monday
26 2/05/2016 north monday
27 2/05/2016 south monday
28 2/05/2016 east monday
期望的输出: 过去两个月
Day Region countofjobsonparticularday no of days
sunday south 34 8 (no of sund forlast 2 months)
sunday north 24 8 (no of sund forlast 2 months)
monday south 74 9 (no of mon forlast 2 months)
tuesday east 64 8 (no of tue forlast 2 months)
如何编写查询?请帮助我
答案 0 :(得分:0)
看来你需要这样的东西:
select Day, Region, count(1), count(distinct date_of_completion)
from your_table
where date_of_completion between add_months(sysdate, -2) and sysdate
group by Day, Region
这将计算作业数量和完成作业的DISTINCT天数。 您应该根据您的需要(例如,您希望如何考虑小时,分钟......)来改进这一点
答案 1 :(得分:0)
如果 - 我怀疑 - 你的意思是最后一栏no of days
,应该显示过去两个月的星期一,星期二等总数(无论是否有任何工作(天)),首先创建一个(子)查询,然后在Day
列上加入Aleksej的结果。说到Day
,它是一个Oracle关键字;最好避免使用Oracle关键字作为表名或列名。我在下面使用day_name。
查询结果(可用作子查询):
DAY_NAME CT
--------------- ----------
monday 9
thursday 8
sunday 9
saturday 9
tuesday 8
friday 9
wednesday 8
我没有对结果进行排序(如果用于连接则不需要),我使用低限制,就像OP那样。这由格式模型控制(查询中的to_char
的中间参数,如下所示;如果需要大写的名称,如星期一,请将其从'day'
更改为'Day'
)。< / p>
查询:
with x (day_name) as (
select to_char(sysdate - level + 1, 'day', 'nls_date_language = American')
from dual
connect by level <= sysdate - add_months(sysdate, -2) - 1
)
select day_name, count(*) as ct
from x
group by day_name;
注意'nls_date_language = American'
- 最好是明确表示而不是依赖默认参数。 (如果没有这第三个论点,那么使用德语或中文日期语言运行它的其他人将无法获得加入另一个表的预期结果。)此外,&#34;最后两个月的定义&#34;模糊;我使用了今天(包括)和两个月前(即2016年3月24日到5月23日之间)的所有日子。这些日期由包含sysdate
的两个表达式控制。
答案 2 :(得分:0)
感谢@mathguy和@Aleksej
我尝试了这个有效的查询
选择to_char(dayofcompletion,&#39; DY&#39;)as day_name,count(1),count(distinct(trunc(dayofcompletion)))as noofdays
来自tablename
其中trunc(dayofcompletion)&gt; = trunc(sysdate-60)和trunc(dayofcompletion)&lt; = trunc(sysdate-1)
按to_char分组(dayofcompletion,&#39; DY&#39;)