Sql 获得用户的第50次和第100次销售
数据库表中有许多产品。我想创建一份显示10号和25号的报告。。等等该产品的订单和购买人的日志 目前我有Sql 获得用户的第50次和第100次销售,sql,mariadb,Sql,Mariadb,数据库表中有许多产品。我想创建一份显示10号和25号的报告。。等等该产品的订单和购买人的日志 目前我有 select CONCAT(sales.lastName,' / ', sales.firstName) as salesNames, sales.created_at as Sale_Date FROM Sales JOIN users ON sales.user_id = users.id WHERE sales.status = 1 AND sales.created
select
CONCAT(sales.lastName,' / ', sales.firstName) as salesNames,
sales.created_at as Sale_Date
FROM Sales
JOIN users ON sales.user_id = users.id
WHERE sales.status = 1
AND sales.created_at < CURDATE()
在MariaDB 10.2中,可以使用行号。您的解释不清楚-为什么要加入users表?产品是什么 但我认为你在寻找这样的东西:
select concat(u.lastName, ' / ', u.firstName) as salesNames,
s.created_at as Sale_Date
from (select s.*,
row_number() over (partition by s.product_id order by s.created_at) as seqnum
from sales s
where s.status = 1 and
s.created_at < CURDATE()
) s join
users u
on s.user_id = u.id
where seqnum in (10, 25);
什么版本的MySQL?如果没有为每个用户递增的sale counter列,那么我们需要计算它,为每个销售将行标记为第1、第2、第3等。最后介绍了行数窗口函数!在MySQL 8.0中。对于早期版本,我们可以在精心编制的查询中使用MySQL用户定义变量来计算行号。是MySQL还是MariaDB?“这两个现在变得很不一样了。”“我的主人是MariaDB,MariaDB的版本是什么?”?10.2,更新、旧版本?Mariadb版本10.2
select concat(u.lastName, ' / ', u.firstName) as salesNames,
s.created_at as Sale_Date
from (select s.*,
row_number() over (partition by s.product_id order by s.created_at) as seqnum
from sales s
where s.status = 1 and
s.created_at < CURDATE()
) s join
users u
on s.user_id = u.id
where seqnum in (10, 25);