如何强制SQL查询计数max/min/avg正常工作?

Rom*_*man 2 sql oracle

我有一个问题是编写正确的sql查询,该查询应根据国家和网站选择两个日期之间的最小/最大/平均持续时间.

我的查询:

SELECT v.country as country, v.site as site,
  COUNT(*) as N --,
  --MAX(list of durations in days between discovered date to repored date on each violation by country and site) as "Maximum",
  --MIN(list of durations in days between discovered date to repored date on each violation by country and site) as "Minimum",
  --AVG(list of durations in days between discovered date to repored date on each violation by country and site) as "Mean"
FROM violations v
WHERE v.trial_id = 3
GROUP BY ROLLUP (v.country, v.site)
Run Code Online (Sandbox Code Playgroud)

这是我的SQLFIDDLE,其中包含改进注释行所需的数据结构和查询.

请问你能帮帮我吗?

RB.*_*RB. 5

使用Oracle,日期存储为偏移量,因此您只需从另一个日期中减去1个日期.有关更多信息,请参阅日期算术

SQLFiddle

SELECT v.country as country, v.site as site,
  COUNT(*) as N,
  MAX(reporded_date - discovered_date) as "Maximum",
  MIN(reporded_date - discovered_date) as "Minimum",
  AVG(reporded_date - discovered_date) as "Mean"
FROM violations v
WHERE v.trial_id = 3
GROUP BY ROLLUP (v.country, v.site)
Run Code Online (Sandbox Code Playgroud)

请注意,您提供的测试数据总是相隔1天,所以我也在我的小提琴中更新了(对于德国).