【问题标题】:MYSQL SUM() returning top 10 valuesMYSQL SUM() 返回前 10 个值
【发布时间】: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,而不仅仅是笛卡尔积。

标签: mysql database select sum


【解决方案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 来访问我的数据库进行编辑等,同时我试图让事情正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 2022-01-19
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多