0

id_cerintaそれぞれでグループ化されたパーセンテージを返したいと思います。たとえば、グループ化された に従って、すべての録音に分割されたsubcerinteProiect録音の数などです。acoperire= 'acoperita'subcerinteProiectid_sarcina

ここに画像の説明を入力

私は次のようなものを試しました:

SELECT 
    id_cerinta,
    SUM(CASE WHEN acoperire = 'acoperita' THEN 1 ELSE 0 END) 
        / COUNT(*) * 100 AS nr_subcerinte_acoperit 
FROM 
    subcerinteProiect 
GROUP BY 
    id_cerinta

しかし、それはあまりうまくいきません。0 のみを返します。

4

1 に答える 1

3

これは整数演算によるものです。これらを試してください:

SELECT 5/100, 57/100, 99/100;

結果はすべて 0 です。

今試してみてください:

SELECT 5.0/100, 57.0/100, 99.0/100;

より良い結果ですよね?

したがって、クエリの場合:

SELECT 
    id_cerinta, 
    CONVERT(DECIMAL(5,2), 
        SUM(CASE WHEN acoperire = 'acoperita' THEN 1 ELSE 0 END) 
            / COUNT(*) * 100.0) AS nr_subcerinte_acoperit 
FROM 
    subcerinteProiect 
GROUP BY
    id_cerinta
于 2012-07-12T15:55:02.807 に答える