2

我有一个名为 users_preferred_zips 的表,如下所示:

 username  |  price  |   zip   |  program  |  active
-----------+---------+---------+-----------+---------
 joe       |    5    |  92108  |  dog      |    1
 tom       |    7    |  92108  |  dog      |    1
 mary      |    5    |  92108  |  dog      |    1
 paul      |    6    |  92108  |  dog      |    1
 ron       |    6    |  92108  |  dog      |    1

我有另一个名为 users 的表,看起来像这样

 username  |  balance
-----------+----------
 joe       |    10
 tom       |    12
 mary      |    2
 paul      |    14
 ron       |    3

我需要一个查询来从表中提取和求和表中的 3 个最高值,其中users_preferred_zips表中的值大于或等于 5。我知道我需要做一些事情,但下面的查询不起作用。这是我的查询:usernameusersbalanceinner join

SELECT SUM(price) AS SumOfTopValues
FROM (
    SELECT users_preferred_zips . * , users.last_purchase, users.lesson_type, users.pref_acct_balance
    INNER JOIN users ON ( users_preferred_zips.username = users.username ) 
    WHERE users_preferred_zips.zip =  '92108'
    AND users_preferred_zips.program =  'dog'
    AND users_preferred_zips.active =  1
    AND users.pref_acct_balance >= '5'
    ORDER BY price DESC
    LIMIT 3
) AS sub

因此,正确的查询将提取以下内容:

3 最高:

joe   |  5
tom   |  7
paul  |  6

3 个最高值之和 = 18

我觉得这应该很简单,但我很难过!谢谢你的帮助

4

1 回答 1

2

您可以使用以下方法进行检查:

SELECT SUM(price) AS SumOfTopValues
FROM users_preferred_zips
WHERE username IN (
  SELECT username
  FROM users
  WHERE pref_acct_balance >= 5
)
于 2012-05-04T14:34:16.230 回答