SELECT
`name`, count(`cid`) AS count, Min(`price-3`) AS min, Max(`price-3`) AS max
FROM ed_prices
WHERE type="M"
GROUP BY cid, type
这个查询给了我我想要的类型M的东西。但是我有4种不同的类型,比如M,并且每个类型的结果都是必要的。虽然这个查询给我一个这样的结果:
name, count, min, max
我需要这样的结果:
name, countM, minM, maxM, countP, minP, maxP, countZ, minZ, maxZ ...
我怎样才能做到这一点?
答案 0 :(得分:2)
我知道这并不是你想要的,但你可以使用它吗?
SELECT `name`
, type -- you'll want to include the type for each line item
-- to be able to identify which type the values refer to
, count(`cid`) AS count
, Min(`price-3`) AS min
, Max(`price-3`) AS max
FROM ed_prices
WHERE type IN ("M","P","Z","Q") -- where M, P, Z, Q are the different product types
GROUP BY cid, type
您还可以尝试自行加入以将结果合并到一个行中,以便按照您在问题中的要求获得结果,但对于少数产品以外的其他任何产品都不具备可扩展性..
SELECT `name`
, countM
, minM
, maxM
, countZ
, minZ
, maxZ
, countP
, minP
, maxP
, countQ
, minQ
, maxQ
FROM
(SELECT `name`
, count(`cid`) AS countM
, Min(`price-3`) AS minM
, Max(`price-3`) AS maxM
FROM ed_prices
WHERE type = "M"
GROUP BY cid) MType
INNER JOIN
(SELECT `name`
, count(`cid`) AS countP
, Min(`price-3`) AS minP
, Max(`price-3`) AS maxP
FROM ed_prices
WHERE type = "P"
GROUP BY cid) PType ON MType.`name` = PType.`name`
INNER JOIN
(SELECT `name`
, count(`cid`) AS countZ
, Min(`price-3`) AS minZ
, Max(`price-3`) AS maxZ
FROM ed_prices
WHERE type = "Z"
GROUP BY cid) ZType ON MType.`name` = ZType.`name`
INNER JOIN
(SELECT `name`
, count(`cid`) AS countQ
, Min(`price-3`) AS minQ
, Max(`price-3`) AS maxQ
FROM ed_prices
WHERE type = "Q"
GROUP BY cid) QType ON MType.`name` = QType.`name`