Mysql 为某个日期之间的id\u emp选择计数id\u产品
我在MySQL中有一个表,显示了使用产品id从员工处购买的产品。它还显示了他们购买的日期。 这是我的问题,我想做一个选择,计算员工在某个日期之间所做的产品数量 我的桌子的一个例子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 |
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之间使用日期(时间)
,它将不可搜索,即如果有可用的索引将无法受益。