GROUP BY의 대안

billID기본 키 가되는 테이블이 있습니다 .

Invoice (billID, item, value, quantity)

다음 쿼리 :

SELECT item, sum(quantity) AS TotalItems
FROM Invoice
WHERE value>1
GROUP BY item
HAVING sum(quantity)>10

, 만 사용하여 최적화 (또는 최적화 해제 ?) 하려면 다시 작성해야합니다 .SELECTFROMWHERE

  1. 새로운 쿼리가 무엇을 제거 GROUP BY하고 HAVING있습니까?
  2. 그것을 제거 할 수 항상 GROUP BY& HAVING만 사용 SELECT, FROM그리고 WHERE?

내 접근 방식 :

[1] 이것을 달성하기 위해 UNION다른 items것을 사용 하고 있습니다. 그러나 가장 큰 문제는 내가 모든 것을 미리 알아야한다는 것 item입니다.

SELECT item, sum(quantity) FROM Invoice WHERE item='lumia'
UNION
SELECT item, sum(quantity) FROM Invoice WHERE item='iphone'
UNION
SELECT item, sum(quantity) FROM Invoice WHERE item='samsung'
UNION
SELECT item, sum(quantity) FROM Invoice WHERE item='moto'
.
.
.
and so on

결과를 얻는 다른 방법이 있습니까?

레이더

하위 쿼리를 사용하고 각 항목의 수량을 합산 할 수 있습니다.

SELECT A.item, A.Total
FROM
(  SELECT distinct item,
       (SELECT SUM(quantity)
        FROM Invoice I2 
        WHERE I2.item = I1.item) Total
FROM Invoice I1
) A
where Total >10

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사