2

私はこのテーブルを次のように埋めましたhttp://sqlfiddle.com/#!2/3736a/4、私がやろうとしていることは次のとおりです:

列 nom_agrupacion から n グループの名前 (この場合は 4 つのグループ名: CAFE NESCAFE、CAFE LEGAL、CAFE INTERNA、null) があり、最初に nom_agrupacion (グループの名前) で並べ替え、次に他の列で並べ替える必要があります。コストです。

それを行うクエリはこれです

SELECT * FROM bby_venta_co WHERE promocion_id = 100000189
AND ti = 153
AND ffi = 12
AND ci = 1
ORDER BY nom_agrupacion DESC, costo DESC;

そしてこれを入手

ID  DTTI    TI     FFI  CI  PROMOCION_ID    CODIGO_BARRAS   COSTO   NOM_AGRUPACION
53  1101    153     12  1   100000189       7501001602727   34.55   CAFE NESCAFE
55  1102    153     12  1   100000189       7501001602727   34.55   CAFE NESCAFE
62  1107    153     12  1   100000189       7501059224841   19.45   CAFE NESCAFE
65  1108    153     12  1   100000189       17501052411115  28.3    CAFE LEGAL
66  1109    153     12  1   100000189       17501052411115  28.3    CAFE LEGAL
67  1110    153     12  1   100000189       7501052411118   24.8    CAFE LEGAL
57  1103    153     12  1   100000189       7501052411118   24.8    CAFE LEGAL
61  1106    153     12  1   100000189       17501052418732  55.6    CAFE INTERNA
52  1100    153     12  1   100000189       27501052418739  32.6    CAFE INTERNA
51  1099    153     12  1   100000189       27501052418739  32.6    CAFE INTERNA
60  1105    153     12  1   100000189       7501052418520   19.35   CAFE INTERNA
59  1104    153     12  1   100000189       7501000112388   12.9    (null)
68  1111    153     12  1   100000189       7501000112388   12.9    (null)

しかし、これを取得できるように情報を並べ替える必要があります。すべてのグループ名の最初の行を取得し (グループとして null カウントもあるために 4 つ取得しました)、次にすべてのグループの 2 番目の行などを取得して、このようなものを取得します。

ID  DTTI    TI     FFI  CI  PROMOCION_ID    CODIGO_BARRAS   COSTO   NOM_AGRUPACION
53  1101    153     12  1   100000189       7501001602727   34.55   CAFE NESCAFE
66  1109    153     12  1   100000189       17501052411115  28.3    CAFE LEGAL
61  1106    153     12  1   100000189       17501052418732  55.6    CAFE INTERNA
59  1104    153     12  1   100000189       7501000112388   12.9    (null)
55  1102    153     12  1   100000189       7501001602727   34.55   CAFE NESCAFE
65  1108    153     12  1   100000189       17501052411115  28.3    CAFE LEGAL
52  1100    153     12  1   100000189       27501052418739  32.6    CAFE INTERNA
68  1111    153     12  1   100000189       7501000112388   12.9    (null)    
62  1107    153     12  1   100000189       7501059224841   19.45   CAFE NESCAFE
57  1103    153     12  1   100000189       7501052411118   24.8    CAFE LEGAL
51  1099    153     12  1   100000189       27501052418739  32.6    CAFE INTERNA
60  1105    153     12  1   100000189       7501052418520   19.35   CAFE INTERNA

これは1つのクエリでも可能ですか?

少なくともすべてのグループの最初の行を 1 回取得しようとしましたが、クエリが正しく機能しません。

SELECT * FROM bby_venta_co WHERE promocion_id = 100000189
AND ti = 153
AND ffi = 12
AND ci = 1
GROUP BY  costo, nom_agrupacion
ORDER BY nom_agrupacion DESC, costo DESC;

group by を使用して最初に単一のコストを取得し、次に単一の nom_agrupacion を取得しますが、コストを読み取るだけのようです。また、group by nom_agrupacion のみを使用すると、最も高い値を持つ列 costo の行が表示されません。

どんな助けでも感謝します。

4

1 に答える 1