我在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
我想知道每天"之前"one_answers"之后"商家交易的信息,以比较
像下面的这个
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
但是这个查询不起作用
您可以使用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;
如果在标识符(这里是列别名(中使用-
等特殊字符,则还需要将它们括在反引号中。或者避免在它们中同时使用特殊字符。