Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 计算字段值的大多数出现次数_Mysql_Count_Field_Sum - Fatal编程技术网

Mysql 计算字段值的大多数出现次数

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

给定以下查询,如何返回包含最多事务的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         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:我认为你不能在一个查询中完成这项工作,但你可以通过运行两个子查询来避免往返数据库。我会把它添加到我的答案中。