2014-07-15 2 views
0

저는 Libreoffice Base와 HSQL을 사용하여 SQL을 배우기 위해 사용하고있는 자전거 타기 데이터베이스를 가지고 있습니다. 데이터베이스는 Index, Date, Bike, Miles에 대한 열이있는 테이블로 구성됩니다.하위 그룹 데이터의 LOBase HSQL 하위 쿼리

내가하고 싶은 것은 도로 자전거 용 자전거 타기와 내 자전거 용 타기 자전거 타기의 합계가있는 열을 만드는 것입니다. 하위 쿼리 합계로 시작했지만 전체 데이터베이스에 대한 총계를 제공합니다.

SELECT YEAR("RideDate") AS "Year", SUM("Miles") AS "Miles", 
(SELECT SUM("Miles") FROM "BikeDate" 
    WHERE("Bike" = 'Fuji' OR "Bike" = 'Yfoil')) AS "% Miles" 
FROM "BikeDate" AS "BikeDate" 
GROUP BY YEAR("RideDate") 
ORDER BY YEAR("RideDate") DESC 

나는 올해로 그룹화하고 있기 때문에, 어떻게 각 그룹화 엘리먼트 -> 올해의 합을 얻을 수 있습니까 : 여기에 도로 자전거 내 코드가 다른 하위 쿼리는 MTN 자전거 컬럼에 사용되는 것입니까? 올바른 용어를 모르는 것에 대해 사과드립니다. 나는 또한 일년 내내 자전거를 묶는 평범한 총액을하고 싶지 않습니다. where 절을 사용하여 연도 합계를 나누기를 원합니다. 어떤 도움이라도 감사합니다, Dave. LOBase 4.2.3.3.

답변

0

내가 원래 게시물에 같은 값을 반환하기 위해, 당신이 정말로 필요에 따라 두 가지 가능성을 제시하자 추가 열을 생성하기 위해

SELECT 
    YEAR("RideDate") AS "Year", 
    SUM("Miles") AS "Miles", 
    SUM(CASE WHEN "Bike" = 'Fuji' OR "Bike" = 'Yfoil' THEN "Miles" ELSE 0 END) as "% Miles" 
FROM "BikeDate" AS "BikeDate" 
GROUP BY YEAR("RideDate") 
ORDER BY YEAR("RideDate") DESC 

, 그건 정말 계산 백분율. . . 같은 :

SELECT 
    YEAR("RideDate") AS "Year", 
    SUM("Miles") AS "Miles", 
    SUM(CASE WHEN "Bike" = 'Fuji' OR "Bike" = 'Yfoil' THEN "Miles" ELSE 0 END) as "Miles_Fuji_Yfoil", 
    SUM(CASE WHEN "Bike" = 'Fuji' OR "Bike" = 'Yfoil' THEN "Miles" ELSE 0 END) * 100.0000000/SUM("Miles") as "Pct_Miles_Fuji_Yfoil" 
FROM "BikeDate" AS "BikeDate" 
GROUP BY YEAR("RideDate") 
ORDER BY YEAR("RideDate") DESC 

설명 :이 때 HSQL 기능 CASE를 사용합니다. . . 또는. . . 값 ELSE 0 END이므로 SUM (집계 함수) 만 해당 값입니다.