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

users_preferred_zipsテーブルから 5 以上の値を持つテーブルusernameから最大 3 つの値を引き出して合計するクエリが必要です。何らかの操作を行う必要があることはわかっていますが、以下のクエリが機能しません。ここに私が持っているクエリがあります:usersbalanceinner 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 に答える