[英]Mysql query to count number of rows with value with a group
我有一些用户订购的库存清单。 我需要知道有多少股票被标记为优先级='Y'和'N'
SELECT
glidemedia.glide_outlet.run,
glidemedia.glide_stock.title,
glidemedia.glide_stock.stockID,
glidemedia.glide_stock.titleID,
glidemedia.glide_schedule_entry.priorityItem,
count(glidemedia.glide_schedule_entry.stockID) as stockCount,
count(glidemedia.glide_schedule_entry.priorityItem = 'Y') as priorityItemYes,
count(glidemedia.glide_schedule_entry.priorityItem = 'N') as priorityItemNo
FROM
glidemedia.glide_outlet
INNER JOIN glidemedia.glide_schedule_entry ON glidemedia.glide_outlet.outletID = glidemedia.glide_schedule_entry.outletID
INNER JOIN glidemedia.glide_stock ON glidemedia.glide_schedule_entry.stockID = glidemedia.glide_stock.stockID
WHERE
glidemedia.glide_outlet.run = 109
GROUP BY
glidemedia.glide_schedule_entry.stockID
更改
count(glidemedia.glide_schedule_entry.priorityItem = 'Y') as priorityItemYes,
count(glidemedia.glide_schedule_entry.priorityItem = 'N') as priorityItemNo
至
sum(glidemedia.glide_schedule_entry.priorityItem = 'Y') as priorityItemYes,
sum(glidemedia.glide_schedule_entry.priorityItem = 'N') as priorityItemNo
对于ANSI标准
sum(
case when glidemedia.glide_schedule_entry.priorityItem = 'Y' then 1 else 0 end
) as priorityItemYes
更新为什么使用sum()
而不是count()
,原因是您没有在计算行数,而是在使用某种条件计算某些列值出现的总和/次数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.