如何比较mysql中的LAG函数
Posted
技术标签:
【中文标题】如何比较mysql中的LAG函数【英文标题】:how to comparison LAG function in mysql 【发布时间】:2020-03-25 09:06:08 【问题描述】:我在mysql中遇到了复杂的问题。
我的数据库中有一些表。
示例文档(这只是简单的示例,实际数据太多了,我必须加入)
表“商家”
id name
1 arief
2 john
3 chena
表“交易”
id product_id price merchant_id date
1 1 20000 2 2020-02-01
2 5 25000 1 2020-02-01
3 2 10000 3 2020-02-02
4 2 10000 2 2020-02-02
5 3 5000 2 2020-02-02
5 2 10000 2 2020-02-03
6 3 5000 3 2020-02-04
我想知道商家每天“之前”和“之后”的交易信息进行比较
像下面这样
name_merchant sumtrx_20-02-01 sumtrx_20-02-02 sumtrx_20-02-03 sumtrx_20-02-04
arief 1 0 0 0
john 1 2 1 0
chena 0 1 0 1
我试过这个查询
select m.name, count(trx.id, trx.date = '2020-02-01') as sumtrx_20-02-01, count(trx.id, trx.date = '2020-02-02') as sumtrx_20-02-02, count(trx.id, trx.date = '2020-02-03') as sumtrx_20-02-03, count(trx.id, trx.date = '2020-02-04') as sumtrx_20-02-04 from merchant as m join transaction as trx on m.id = trx.merchant_id
group by m.name
但该查询不起作用
【问题讨论】:
忘记 mysql pivot 的滞后搜索。 【参考方案1】:您可以使用sum()
代替count()
。
SELECT m.name,
sum(trx.date = '2020-02-01') `sumtrx_20-02-01`,
...
sum(trx.date = '2020-02-04') `sumtrx_20-02-04`
FROM merchant m
INNER JOIN transaction trx
ON m.id = trx.merchant_id
GROUP BY m.name;
如果您在标识符中使用-
等特殊字符,您还需要将标识符(此处为列别名)括在反引号中。或者避免在它们中同时使用特殊字符。
【讨论】:
以上是关于如何比较mysql中的LAG函数的主要内容,如果未能解决你的问题,请参考以下文章