mysql统计每科前几名 为什么不能group by group by
怎么写
先明确下你的数据表的结构和字段,以及你想要统计的指标,如果不能用,用子查询也可以
这样?
select * from ( SELECT
MONTH(时间) ,
人员,
SUM(交易量) 交易量
FROM
TABLE
GROUP BY
MONTH(时间),
人员
ORDER BY
交易量 DESC ) temp limit 20
根据问题描述,你希望根据月份统计每个拓展人的交易量前20的商户。你尝试使用MySQL的GROUP BY语句,但似乎不能得到正确的结果。以下是我给出的解决方案:
sql SELECT MONTH(transaction_date) AS month, extension_id, SUM(transaction_amount) AS total_amount FROM transactions GROUP BY MONTH(transaction_date), extension_id
这会得到一个结果集,包含每个月和拓展人的交易总量。 3. 然后,你可以使用以下SQL语句获取每个拓展人每个月交易总量前20的商户:
sql SELECT t.month, t.extension_id, t.total_amount, m.merchant_id, m.merchant_name FROM ( SELECT MONTH(transaction_date) AS month, extension_id, SUM(transaction_amount) AS total_amount FROM transactions GROUP BY MONTH(transaction_date), extension_id ) t JOIN ( SELECT transaction_date, extension_id, merchant_id, merchant_name FROM transactions JOIN merchants ON transactions.merchant_id = merchants.merchant_id ) m ON t.month = MONTH(m.transaction_date) AND t.extension_id = m.extension_id ORDER BY t.month, t.total_amount DESC LIMIT 20
这会得到一个结果集,包含每个拓展人每个月交易总量前20的商户的信息,按照月份和交易总量降序排列。
请注意,以上SQL语句假设你的表结构是合适的,并且你已经根据需要创建了合适的索引。据参考资料提到,你可能需要在适当的字段上创建索引来优化排序操作。如果你的表结构或数据有所不同,你可能需要根据实际情况进行适当的调整。
我希望以上解决方案对你有所帮助。如果你还有任何问题,请随时提问。