将简单查询转换为计数案例语句

时间:2018-09-24 16:03:59

标签: mysql

我有一个非常有用的查询,希望对您简化并转化为可以添加到正在处理的较大查询中的计数有所帮助。我的数据中存在一个场景,其中存在不应该存在多对一关系。为了简单起见,我将其描述为仿佛福特描述了他们出售的特定型号的所有轿车,并且在他们的数据库中,他们多次出现“红色轿车”。这给我们带来了问题,我想在较大的查询中生成该事件的简单计数。

我有一个查询,成功地发现了所有发生的“红色轿车”重复的情况(如下)

select p.model, p.mFinish, count(p.productVendorStockNumber) as prodno, b.BrandName
from products p
join brands b on p.brandID = b.brandID 
where p.brandid = 299 and p.`status` = 1 and p.model != ''
GROUP BY p.model, p.mFinish
HAVING prodno > 1;

会产生类似这样的输出(尽我所能在此处进行复制-抱歉)

|Model|Finish| Prod No| BrandName|
|12334|Red   |      2 | Santec

我想做的只是计数,在这种情况下,case语句中出现“ prod no”。我有点像个熟练的SQL专家,所以将整个查询简化为一个计数是我无法做到的。我什至不知道要搜索什么,我试图将整个查询放在百灵鸟的“ Count”和“ Sum”中,显然这是行不通的。当某人有时间时,可以请他们提供一些洞察力,以了解如何进行此类操作?

我不知道这是否有帮助,但是我要添加到的查询在下面

select b.brandName, b.BrandCode, SUM(Case When p.IMAP > p.MSRP THEN 1 ELSE NULL END) as 'MAP Greater Than MSRP', COUNT(DISTINCT(p.ProductVendorStockNumber)) as 'Total Products', MAX(dl.createDate) 'Most Recent Data Load', b.BrandStatus, b.datasource as 'Data Source', b.state as 'State', CASE WHEN dl.datanextConf = 1 THEN 'Confirmed' ELSE 'Not Confirmed' END AS 'Data Incoming?'
from products p
left join brands b on p.brandID = b.brandID
left join dataloads dl on b.brandID = dl.brandID
where p.status = 1 and b.brandID = 653

1 个答案:

答案 0 :(得分:0)

不知道为什么,但是有人发布了答案,然后答案被删除。我要重新发布他们提供的内容。

list
相关问题