Sum*_*mit 1 mysql sql database 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
Run Code Online (Sandbox Code Playgroud)
我需要重写,以优化(或去优化?)只使用SELECT,FROM和WHERE.
GROUP BY和HAVING?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
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来获得结果?
我们可以使用子查询并对每个项目的数量求和
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
Run Code Online (Sandbox Code Playgroud)