Mysql 计算字段值的大多数出现次数
给定以下查询,如何返回包含最多事务的p_名称?同样,我如何返回交易最多的t_金额。当然,我想在这一个查询中完成这一切Mysql 计算字段值的大多数出现次数,mysql,count,field,sum,Mysql,Count,Field,Sum,给定以下查询,如何返回包含最多事务的p_名称?同样,我如何返回交易最多的t_金额。当然,我想在这一个查询中完成这一切 SELECT t.*, p.* FROM transactions t LEFT JOIN partners p ON p.id=t.partner_id 它可以返回如下内容: t_amount t_platform t_user p_id p_name 100.00 windows 122 2
SELECT t.*, p.*
FROM transactions t
LEFT JOIN partners p ON p.id=t.partner_id
它可以返回如下内容:
t_amount t_platform t_user p_id p_name
100.00 windows 122 20 simmons
200.00 windows 211 20 simmons
100.00 mac 200 18 smith
100.00 linux 190 20 simmons
100.00 mac 100 18 smith
考虑到这个结果集,我会得到best_partner=simmons和best_amount=100.00
谢谢 我假设最佳合伙人=交易次数最多的合伙人,最佳金额=最频繁发生的交易金额 要对交易进行计数,可以使用计数功能和分组方式。大概是这样的:
SELECT p.name,count(t.id) as transactionCount
FROM transactions t
LEFT JOIN partners p ON p.id=t.partner_id
GROUP BY p.name
ORDER BY 2 DESC
LIMIT 1
最佳金额类似:
SELECT t.amount, Count(t.id) as transactionAmountCount
FROM transactions t
LEFT JOIN partners p ON p.id=t.partner_id
GROUP BY t.amount
ORDER BY 2 DESC
LIMIT 1
编辑:合并为两个子查询:
SELECT
(SELECT p.name
FROM transactions t
LEFT JOIN partners p ON p.id=t.partner_id
GROUP BY p.name
ORDER BY count(t.id) DESC
LIMIT 1) as best_partner
,
(SELECT t.amount
FROM transactions t
LEFT JOIN partners p ON p.id=t.partner_id
GROUP BY t.amount
ORDER BY Count(t.id) DESC
LIMIT 1) as most_occuring_transaction_amount
我假设最佳合伙人=交易次数最多的合伙人,最佳金额=最频繁发生的交易金额 要对交易进行计数,可以使用计数功能和分组方式。大概是这样的:
SELECT p.name,count(t.id) as transactionCount
FROM transactions t
LEFT JOIN partners p ON p.id=t.partner_id
GROUP BY p.name
ORDER BY 2 DESC
LIMIT 1
最佳金额类似:
SELECT t.amount, Count(t.id) as transactionAmountCount
FROM transactions t
LEFT JOIN partners p ON p.id=t.partner_id
GROUP BY t.amount
ORDER BY 2 DESC
LIMIT 1
编辑:合并为两个子查询:
SELECT
(SELECT p.name
FROM transactions t
LEFT JOIN partners p ON p.id=t.partner_id
GROUP BY p.name
ORDER BY count(t.id) DESC
LIMIT 1) as best_partner
,
(SELECT t.amount
FROM transactions t
LEFT JOIN partners p ON p.id=t.partner_id
GROUP BY t.amount
ORDER BY Count(t.id) DESC
LIMIT 1) as most_occuring_transaction_amount
最好的意思是最频繁。所以,最好的金额是100最频繁发生最好的意思是最频繁。因此,最佳金额为100最频繁发生无法组合这两个查询?选择t.amount、p.name、Countt.id作为TransactionMountCount FROM transactions t LEFT JOIN partners p ON p.id=t.partners\u id按t.amount分组,p.name按3描述限制1@remi,3号订单的作用是什么?更直接地说,3指的是什么?@k00k我自己,3指的是第三列。@k00k:我认为你不能在一个查询中完成这项工作,但你可以通过运行两个子查询来避免往返数据库。我将把它添加到我的答案中。无法组合这两个查询?选择t.amount、p.name、Countt.id作为TransactionMountCount从事务t LEFT加入合作伙伴p ON p.id=t.partner\U id按t.amount分组,p.name按3描述限制排序1@remi,3号订单的作用是什么?更直接地说,3指的是什么?@k00k我自己,3指的是第三列。@k00k:我认为你不能在一个查询中完成这项工作,但你可以通过运行两个子查询来避免往返数据库。我会把它添加到我的答案中。