Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
Mysql 为某个日期之间的id\u emp选择计数id\u产品_Mysql_Sql_Database_Select - Fatal编程技术网

Mysql 为某个日期之间的id\u emp选择计数id\u产品

Mysql 为某个日期之间的id\u emp选择计数id\u产品,mysql,sql,database,select,Mysql,Sql,Database,Select,我在MySQL中有一个表,显示了使用产品id从员工处购买的产品。它还显示了他们购买的日期。 这是我的问题,我想做一个选择,计算员工在某个日期之间所做的产品数量 我的桌子的一个例子 Time | Emp_id | prod_id -------------------------------------------- 2017-03-28 08:03:01.777 | 34 | 144 2017-03-28 08:15:58.657 |

我在MySQL中有一个表,显示了使用产品id从员工处购买的产品。它还显示了他们购买的日期。 这是我的问题,我想做一个选择,计算员工在某个日期之间所做的产品数量

我的桌子的一个例子

Time                     | Emp_id |  prod_id 
--------------------------------------------
2017-03-28 08:03:01.777  | 34     |  144  
2017-03-28 08:15:58.657  | 34     |  156  
2017-03-28 10:14:34.232  | 34     |  156  
2017-03-29 17:03:41.655  | 34     |  156    
2017-03-28 20:13:28.111  | 55     |  1090  
2017-03-28 16:45:17.777  | 55     |  1090  
2017-03-29 19:03:01.777  | 55     |  76
我想得到2017-03-28和2017-03-29之间的所有购买,如下所示:

day        | employee | product | count
---------------------------------------
2017-03-28 | 34       | 144     | 1  
2017-03-28 | 34       | 156     | 2  
2017-03-28 | 55       | 1090    | 2  
2017-03-29 | 34       | 156     | 1    
2017-03-29 | 55       | 76      | 1

我真的不知道怎么做,有人能帮我吗?

这似乎是一个简单的聚合

select date(time) as day,
    emp_id as employee,
    prod_id as product,
    count(*) as count
from your_table
where time >= '2017-03-28'
    and time < '2017-03-30'
group by date(time),
    emp_id,
    prod_id;
选择日期(时间)作为日期,
emp_id作为员工,
产品id作为产品,
计数(*)作为计数
从你的桌子上
其中时间>='2017-03-28'
时间<'2017-03-30'
按日期(时间)分组,
emp_id,
产品标识;

这似乎是一个简单的聚合

select date(time) as day,
    emp_id as employee,
    prod_id as product,
    count(*) as count
from your_table
where time >= '2017-03-28'
    and time < '2017-03-30'
group by date(time),
    emp_id,
    prod_id;
选择日期(时间)作为日期,
emp_id作为员工,
产品id作为产品,
计数(*)作为计数
从你的桌子上
其中时间>='2017-03-28'
时间<'2017-03-30'
按日期(时间)分组,
emp_id,
产品标识;

您可以通过使用聚合函数
count()
和MySQL中的函数轻松实现这一点。这将按天统计每个员工的所有产品:

select 
    Date(`Time`) as day,
    Emp_id,
    prod_id,
    count(*) as `count`
from Table1
where `Time` >= '2017-03-28'
    and `Time` < '2017-03-30'
group by Date(`Time`), Emp_id, prod_id;
选择
日期(`Time`)作为日期,
Emp_id,
产品id,
count(*)为'count`
来自表1
其中“时间”>=“2017-03-28”
和“时间”<'2017-03-30'
按日期(`Time`)、Emp\u id、prod\u id分组;

下面是一个

您可以通过使用聚合函数
count()
和MySQL中的函数轻松实现这一点。这将按天统计每个员工的所有产品:

select 
    Date(`Time`) as day,
    Emp_id,
    prod_id,
    count(*) as `count`
from Table1
where `Time` >= '2017-03-28'
    and `Time` < '2017-03-30'
group by Date(`Time`), Emp_id, prod_id;
选择
日期(`Time`)作为日期,
Emp_id,
产品id,
count(*)为'count`
来自表1
其中“时间”>=“2017-03-28”
和“时间”<'2017-03-30'
按日期(`Time`)、Emp\u id、prod\u id分组;

这是一个

到目前为止您尝试了什么?结果背后的逻辑是什么?到目前为止您尝试了什么?结果背后的逻辑是什么?为什么不使用BETWEEN?因为这样我就必须使用
日期(时间)在date1和date2之间
不可搜索,即如果有可用的索引将无法受益。为什么不使用between?因为这样我将不得不在date1和date2之间使用
日期(时间)
,它将不可搜索,即如果有可用的索引将无法受益。