1

2 つの列 A と B を持つテーブル T があります。

次に、ARRAY という大きなデータ セットがあります。ARRAY は、A
に表示される可能性のあるデータのリストを保持します。以下のものが必要です
。結果を R として記録します。
2. row.B > 2/3*max_of_B_in_all_rows となるように R から行を取得します。


これを一言で言ってもいいですか?ありがとう!

4

2 に答える 2

0

ユーザー定義変数を使用して Max of B を格納するオプションの 1 つを次に示します。

SELECT A, B
FROM (
  SELECT A, B, @maxB:=IF(@maxB>B,@maxB,B) MaxB
  FROM TableT
      JOIN (SELECT @maxB:=0) T2
  WHERE A IN (YourList)
  ORDER BY B DESC
  LIMIT 10
) T
WHERE B >= (2/3)*MaxB

SQL フィドルのデモ

于 2013-03-30T01:18:44.573 に答える
0

結合が 1 つだけの 1 つのクエリでの最も簡単なソリューションを次に示します。

SELECT *, MAX(B) AS MAXB
FROM T
INNER JOIN ARRAY
USING(A)
ORDER BY B DESC
HAVING B > MAXB * 2 / 3
于 2013-03-30T02:54:14.950 に答える