Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询,包含按日期分组的汇总统计数据_Sql_Database_Statistics - Fatal编程技术网

SQL查询,包含按日期分组的汇总统计数据

SQL查询,包含按日期分组的汇总统计数据,sql,database,statistics,Sql,Database,Statistics,我正试图解决一个问题:查询系统的统计概览。 我要从中提取数据的表称为“Event”,它包含以下列(除其他列外,仅发布必要的列): 日期(作为时间戳) 位置ID(作为编号) 事件类型(作为字符串) 另一个最有可能需要的表是“Location”,其中包含以下列: id(作为编号) 诊所(作为布尔值) 我想要的是不同条件下的事件总和,按天分组。用户可以在所需的天数范围内提供输入,这意味着输出每天只能显示给定限制内的一行。列应如下所示: 日期:日期,按天分组数据 deliverySum:给定日

我正试图解决一个问题:查询系统的统计概览。 我要从中提取数据的表称为“Event”,它包含以下列(除其他列外,仅发布必要的列):

  • 日期(作为时间戳)
  • 位置ID(作为编号)
  • 事件类型(作为字符串)
另一个最有可能需要的表是“Location”,其中包含以下列:

  • id(作为编号)
  • 诊所(作为布尔值)
我想要的是不同条件下的事件总和,按天分组。用户可以在所需的天数范围内提供输入,这意味着输出每天只能显示给定限制内的一行。列应如下所示:

  • 日期:日期,按天分组数据
  • deliverySum:给定日期的条目总和,其中eventType为“sightingDelivered”,且id=posiitonId的位置的clinic=true
  • pickupSum:与deliverySum相同,但事件类型为“sightingPickup”
  • rejectedSum:当天事件的总和,其中positionId为4000
  • acceptedSum:与rejectedSum相同,但positionId为3000
因此,一行应显示给定日期在不同标准下的总和

我对SQL有很好的理解,但是我的经验很低,这导致我在这里提问


任何帮助都将不胜感激

SQL Server既没有时间戳也没有布尔值,因此我将为MySQL回答这个问题

select date(date),
       sum( e.eventtype = 'sightingDelivered' and l.clinic) as deliverySum,
       sum( e.eventtype = 'sightingPickup' and l.clinic) as pickupSum,
       sum( e.position_id = 4000 ) as rejectedSum,
       sum( e.position_id = 3000 ) as acceptedSum
from event e left join
     location l
     on e.position_id = l.id
where date >= $date1 and date < $date2 + interval 1 day
group by date(date);
选择日期(日期),
总和(e.eventtype='sightingDelivered'和l.clinic)作为deliverySum,
总和(e.eventtype='sightingPickup'和l.clinic)为pickupSum,
总和(如位置id=4000)作为拒绝总和,
作为接受总和的总和(如位置id=3000)
从事件e左连接
位置l
在e.position_id=l.id上
其中日期>=$date1和日期<$date2+间隔1天
按日期分组(日期);

仅标记您正在使用的数据库管理系统。一旦您确定了您正在使用的RDBMS,请参阅“请标记您正在使用的数据库”。还提供样本数据和期望结果。