0

私はこのテーブルを持っています:

TICKETID | PRICE | NUMBER

したがって、それぞれticketidについて、プレーヤーはの各番号の価格を支払うことができticketidます。

したがって、プレイヤーが22、23、24の数字に1 $、3 $、4 $を支払いたい場合ticketid、テーブルは次のようになります。

TICKETID | PRICE | NUMBER 
25       |   1   |  22 
25       |   3   |  23 
25       |   4   |  24

合計価格が50を超えるランダムなチケットを選択して、賞品を受け取るようにします。

また、ランダム化が公平であり、この抽選を行う場合、各チケットの出現率は1つだけになるようにします。DISTINCTまたはGROUPBYを使用しない場合、ticketid番号が2のチケットよりも番号が10のaの方が抽選される可能性が高くなります。

私はこれを試しましたが、機能していません:

SELECT DISTINCT(ticketid),SUM(price) FROM table 
     WHERE SUM(price)>50 GROUP BY ticketid

エラーメッセージが表示されます

GROUPBY関数の無効な使用法

誰か助けてもらえますか?

4

1 に答える 1

1

必要なのは、group by集計が処理された後、可能な候補レコードに適用される「HAVING」句です。次に、Havingが適用され、最終結果セットに含まれる(または含まれない)。

SELECT 
      ticketid,
      SUM(price) TotalPrice
   FROM 
      table 
   group by
      TicketID
   HAVING
      sum(price) > 50
于 2012-12-06T13:34:38.513 に答える