【问题标题】:How to use MYSQL Round function in a Multi-Select Statement如何在多选语句中使用 MYSQL Round 函数
【发布时间】:2018-10-05 14:04:34
【问题描述】:
SELECT bp.bizid, bp.usrid, bp.website,
ROUND((SELECT SUM(rating) FROM ratings WHERE bizid=bp.bizid)/(SELECT COUNT(*) FROM ratings WHERE bizid=bp.bizid), 1) AS 'ratings', 
(SELECT COUNT(*) FROM bzreviews WHERE bizid=bp.bizid) AS 'ttlreviews', bp.phoneno, als.bizname, 
(SELECT COUNT(*) FROM endorsment WHERE bizid=bp.bizid) AS 'endorses', als.imgname, bp.`location`, bp.`ownership`, 
(SELECT COUNT(*) FROM follows WHERE bizid=bp.bizid) AS 'followers', bp.categories, bp.openhours, bp.bizdecri FROM bizprofile AS bp 
INNER JOIN alluser AS als ON bp.usrid=als.userid WHERE als.usertype='Business'

**我分享这个是为了帮助可能需要它的人。我正在使用 COUNT 来计算

评论(COUNT()) 追随者 (COUNT())

and endorsmentCOUNT() 在我的 MYSQL 数据库中。 为了找到评分,我使用 Round 函数来帮助将总评分(SUM(评分))与评分数(COUNT())相除后将数字舍入到小数点后一位(COUNT())

【问题讨论】:

  • 你应该解释你的查询的问题。
  • 我的查询没有问题。我正在分享以帮助某人

标签: mysql sql


【解决方案1】:

因为SELECT 语句在ROUND 函数中使用无效。
您将需要使用交付表方法

SELECT 
 *
 , ROUND(alias.ratings, 1) AS ratings
FROM (

    SELECT
      bp.bizid
    , bp.usrid
    , bp.website,
    , ((SELECT SUM(rating) FROM ratings WHERE bizid=bp.bizid)/(SELECT COUNT(*) FROM ratings WHERE bizid=bp.bizid)) AS 'ratings'
    , (SELECT COUNT(*) FROM bzreviews WHERE bizid=bp.bizid) AS 'ttlreviews'
    , bp.phoneno, als.bizname
    , (SELECT COUNT(*) FROM endorsment WHERE bizid=bp.bizid) AS 'endorses'
    , als.imgname, bp.`location`, bp.`ownership`
    , (SELECT COUNT(*) FROM follows WHERE bizid=bp.bizid) AS 'followers'
    , bp.categories
    , bp.openhours
    , bp.bizdecri
    FROM
      bizprofile AS bp 
    INNER JOIN
      alluser AS als
    ON
     bp.usrid = als.userid
    WHERE
     als.usertype = 'Business'
) AS alias

【讨论】:

  • 这完全是错误的。标量子查询可以作为 round() 的参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多