Hirdetés

Új hozzászólás Aktív témák

  • Jim-Y

    veterán

    sziasztok, mivel nem működik az sqlfiddle jelenleg, ezért a példa sémát belinkelem ide:

    create table t1(
    number INT PRIMARY KEY
    );

    insert into t1 values(150);
    insert into t1 values(250);
    insert into t1 values(350);
    insert into t1 values(450);
    insert into t1 values(1150);
    insert into t1 values(3050);
    insert into t1 values(3100);

    create table t2(
    range_id INT AUTO_INCREMENT PRIMARY KEY,
    range_from INT,
    range_to INT
    );

    insert into t2(range_from, range_to) values(0,999);
    insert into t2(range_from, range_to) values(1000,1999);
    insert into t2(range_from, range_to) values(2000,2999);
    insert into t2(range_from, range_to) values(3000,3999);

    Jelenleg azt csinálom, hogy

    SELECT
    B.range_id
    ,B.range_from
    ,B.range_to
    ,COUNT(1)
    FROM t1 A, t2 B
    WHERE
    A.number >= B.range_from AND
    A.number <= B.range_to
    GROUP BY B.range_id;

    Ez azt csinálja, hogy a t2-ben lévő rangekhez megszámolja, hogy hány t1-beli szám tartozik. A példánál maradva
    id | range_from | range_to | count(1)
    1 0 999 4
    2 1000 1999 1
    3 2000 2999 0
    4 3000 3999 2

    Valami ilyesmit kéne kapni. A gondom az, hogy azok a sorok, ahol a count(1) nulla lenne, nem jelennek meg az eredményben. Hogy kéne módosítanom az összegzés, hogy azok a rangek is szerepeljenek, amiben 0 szám van? üdv

Új hozzászólás Aktív témák