MYSQL SUM() 返回前 10 个值

Posted

技术标签:

【中文标题】MYSQL SUM() 返回前 10 个值【英文标题】:MYSQL SUM() returning top 10 values 【发布时间】:2011-08-21 18:08:54 【问题描述】:

我正在尝试查找 7 个数字字段的总和以找到总数,结合输出以显示 LIMIT 10 个结果 ORDER BY total of each SUM。

这是我的 SUM 代码,它可以独立运行,但我不确定如何同时使用这两个查询,不断出现语法错误。

SUM(comfort + service + ambience + friendliness + spacious + experience + toilets)/(7)/COUNT(shop_id) AS total FROM ratings GROUP BY shop_id

这是我正常返回数据的SQL查询:

SELECT * FROM pubs, services, ratings
WHERE pubs.shop_id=services.shop_id AND pubs.shop_id=ratings.shop_id
GROUP BY shop_name
ORDER BY shop_name ASC

我的数据库中没有存储 7 个值的总数,我使用上面的 SUM 查询来查找总数。谢谢

【问题讨论】:

您应该选择 FROM a JOIN,而不仅仅是笛卡尔积。 【参考方案1】:

尝试使用

SELECT pubs.*, services.*, sum(temp.total) as final_total FROM pubs inner join services on pubs.shop_id=services.shop_id
inner join (
select 
SUM(comfort + service + ambience + friendliness + spacious + experience + toilets)/(7) /COUNT(shop_id) AS total, shop_id FROM ratings GROUP BY shop_id
) as temp on pubs.shop_id=temp.shop_id
GROUP BY shop_name
ORDER BY final_total DESC, shop_name ASC

【讨论】:

太棒了!它有效,我正在尝试理解现在它有效的查询.. 非常感谢。我对结果进行了分页,但现在我需要的是按字段名称和 asc/desc 排序。我目前正在使用一个链接来订购,使用 jquery 来订购,标题,总数,开放时间和 ASC/DESC 会更有效吗?我没有太大的成功,但请你推荐一个合适的方法。非常感谢查询代码,我已经摆弄了 4 天,正在寻找错误的信息。谢谢:) 我认为你应该在数据库端进行排序。但是有必要通过对字段进行排序来检查您是否有索引,否则会很慢。关于 jquery,它取决于您存储的数据量。无论如何,首先你应该检查数据库解决方案。 对不起,我很困惑,我正在使用 hiediSQL 而不是 phpadmin 来访问我的数据库进行编辑等,同时我试图让事情正常工作。

以上是关于MYSQL SUM() 返回前 10 个值的主要内容,如果未能解决你的问题,请参考以下文章

总结 MySQL 中的前 5 个值

自定义一个函数sumfib(n),返回斐波那契数列前n项之和 python?

如何计算python中dict中最常见的10个值

子查询返回超过 1 个值 - 使用特定日期的值更新日期范围内的记录

MySQL:带有 JOIN 的 SUM() 返回不正确的值

MYSQL SUM() 返回不正确的值。没有连接