1

グループ化された結果を返す次のオラクル文があります。たとえば、1 つのグループの 10、2 番目のグループの 8 です。

stevilo_prosenj としてのこの count(*) が適切に機能しないように思われるため、それらをカウントするのに問題があります。そのため、各グループの数の結果カウントを取得する方法を誰かが助けてくれれば幸いです..

ありがとうございました

SELECT 
    PZB."OBD_ZA_POSILJANJE_PROSENJ_ID",
    PZB."VISOKOSOLSKO_SREDISCE_ID",
    leto.STUDIJSKO_LETO_ID,
    OBD.VRSTA_PROSNJE vrsta_prosnje_string,
    stdm.NAZIV_VRSTE_STUD_DOMOV naziv_vrste_stud_domov_ ,
    stdm.naziv naziv_stud_dom,
    SIFSTAT.OZNAKA OZNAKA_STATUSA_PROSNJE,
    count(*) as stevilo_prosenj


  FROM MSB_PROSNJE_ZA_BIVANJE PZB,
       S_OBD_POS_PRS_ZA_SUBV_VW OBD,
         S_VISOKOSOLSKO_SREDISCE_VW vss,
         S_STUDIJSKA_LETA_VW leto,
        S_STUDENTSKI_DOMOVI_VW stdm,
        MSB_SIF_STATUSOV_PROSENJ sifstat

  WHERE PZB.OBD_ZA_POSILJANJE_PROSENJ_ID = OBD.OBD_ZA_POSILJANJE_PROSENJ_ID
    AND vss.visokosolsko_sredisce_id     = pzb.visokosolsko_sredisce_id
    AND obd.studijsko_leto_id            = leto.studijsko_leto_id

GROUP BY
    PZB."OBD_ZA_POSILJANJE_PROSENJ_ID",
    PZB."VISOKOSOLSKO_SREDISCE_ID",
    leto.STUDIJSKO_LETO_ID,
    OBD.VRSTA_PROSNJE,
    stdm.NAZIV_VRSTE_STUD_DOMOV,
    stdm.naziv,
    SIFSTAT.OZNAKA
4

3 に答える 3

0

皆様のご意見とご協力に感謝いたします。問題を解決して以来、解決策を投稿しているだけです。未回答の質問を残すのは嫌いなので

カウント部分が私に問題を与えていたので、これを行うことで解決しました。

(SELECT COUNT(*) FROM MSB_PROSNJE_ZA_BIVANJE pzb2 
WHERE PZB2.VRSTA_STUD_DOMOV_ID=pzb.VRSTA_STUD_DOMOV_ID
AND PZB2.MSB_STATUS=PZB.MSB_STATUS 
AND PZB2.OBD_ZA_POSILJANJE_PROSENJ_ID=pzb.OBD_ZA_POSILJANJE_PROSENJ_ID) stevilo 

文全体。だから今、私はすべてを選択してグループ化し、グループ内で影響を受けるすべてのものをステビロとしてカウントする別の選択も行います。それは今動作します。

SELECT pzb.VRSTA_STUD_DOMOV_ID,
pzb.MSB_STATUS,
pzb.OBD_ZA_POSILJANJE_PROSENJ_ID,
OBD.OBDOBJE_PRIKAZ,
pzb.NAZIV_VRSTE_STUD_DOMOV,
PZB.OZNAKA_STATUSA_PROSNJE,
PZB.STUDIJSKO_LETO_ID,
PZB.STUDENTSKI_DOM_ID,
PZB.VISOKOSOLSKO_SREDISCE_ID,
PZB.NAZIV_VISOKOSOLSKEGA_SREDISCA NAZIV_V_SREDISCA,
PZB.NASLOV_VISOKOSOLSKEGA_SREDISCA NASLOV_V_SREDISCA,
PZB.NAZIV_STUD_DOM,
(SELECT COUNT(*) FROM MSB_PROSNJE_ZA_BIVANJE pzb2 
WHERE PZB2.VRSTA_STUD_DOMOV_ID=pzb.VRSTA_STUD_DOMOV_ID
AND PZB2.MSB_STATUS=PZB.MSB_STATUS 
AND PZB2.OBD_ZA_POSILJANJE_PROSENJ_ID=pzb.OBD_ZA_POSILJANJE_PROSENJ_ID) stevilo 

FROM MSB_PROSNJE_ZA_BIVANJE_VW pzb,
S_OBD_POS_PRS_ZA_SUBV_VW obd

WHERE PZB.OBD_ZA_POSILJANJE_PROSENJ_ID=OBD.OBD_ZA_POSILJANJE_PROSENJ_ID 
GROUP BY  pzb.VRSTA_STUD_DOMOV_ID,
pzb.MSB_STATUS,
pzb.OBD_ZA_POSILJANJE_PROSENJ_ID,
OBD.OBDOBJE_PRIKAZ,
pzb.NAZIV_VRSTE_STUD_DOMOV,
PZB.OZNAKA_STATUSA_PROSNJE,
PZB.STUDIJSKO_LETO_ID,
PZB.VISOKOSOLSKO_SREDISCE_ID,
PZB.NAZIV_VISOKOSOLSKEGA_SREDISCA,
PZB.NASLOV_VISOKOSOLSKEGA_SREDISCA,
PZB.NAZIV_STUD_DOM,
PZB.STUDENTSKI_DOM_ID
ORDER BY pzb.VRSTA_STUD_DOMOV_ID
于 2013-10-17T12:35:27.670 に答える
0

GROUP BYが必要であると仮定しますが、SELECTされた列のすべてではありません...

データベースがサポートしている場合は、

SELECT columnA, columnB, columnC, count(*) OVER (PARTITION BY columnA, columnB)
FROM table;

それ以外の場合は、手動で選択する必要があります

SELECT a.columnA, a.columnB, a.columnC, b.countResult
FROM (  SELECT columnA, columnB, columnC
        FROM table
        WHERE conditions
     ) a
JOIN
     (  SELECT columnA, columnB, count(*) AS countResult
        FROM table
        GROUP BY columnA, columnB
     ) b
ON a.columnA = b.columnA
AND a.columnB = b.columnB
/
于 2013-10-02T09:05:38.880 に答える