0

次のようなテーブルにデータがあります。

 fgid   qty   ntid
 1      100   10
 2      90    10
 6      200   11
 1      80    11
 1      120   12
 6      100   12
 6      30    13

そして、私はクエリを作成します:

SELECT fgid, SUM(qty) AS total_qty, COUNT(ntid) AS nt_count FROM sofg 
GROUP BY fgid

AND結果は次のとおりです。

 fgid   total_qty   nt_count
 1      300         3
 2      90          1
 6      330         3

それから私はこのような結果を作りたい:

no    fgid    total_qty   nt_count
1     1       300         3
2     2       90          1
3     6       330         3

クエリでそれを行う方法は?ここで、' no ' は (同様の) 自動インクリメント番号です。

4

2 に答える 2

1

このクエリを試してください。

SELECT 
  @rownum := @rownum + 1 rownum, 
  t.* 
  FROM (SELECT @rownum:=0) r, 
  (
   SELECT fgid, SUM(qty) AS total_qty, COUNT(ntid) AS nt_count FROM sofg GROUP BY fgid
  ) t;
于 2013-03-27T10:27:55.017 に答える
1

基本的にディナカランの回答と同じですが、メインクエリ全体をサブクエリに入れる必要はありません。彼の答えに違いはなく、目を楽しませてくれるかもしれませんが、Dhinakaran の答えを受け入れてください。彼の方が速かったからです。

SELECT 
@rownum:=@rownum + 1 as rownumber,
fgid, 
SUM(qty) AS total_qty, 
COUNT(ntid) AS nt_count 
FROM sofg
, (select @rownum:=0) v 
GROUP BY fgid
于 2013-03-27T10:33:10.683 に答える