[英]Mysql query to count number of rows with value with a group
I have a list of stock ordered by a number of users. 我有一些用户订购的库存清单。 i need to know how many of the stock are labeled priority = 'Y' and 'N'
我需要知道有多少股票被标记为优先级='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
Change 更改
count(glidemedia.glide_schedule_entry.priorityItem = 'Y') as priorityItemYes,
count(glidemedia.glide_schedule_entry.priorityItem = 'N') as priorityItemNo
to 至
sum(glidemedia.glide_schedule_entry.priorityItem = 'Y') as priorityItemYes,
sum(glidemedia.glide_schedule_entry.priorityItem = 'N') as priorityItemNo
For ANSI standard its 对于ANSI标准
sum(
case when glidemedia.glide_schedule_entry.priorityItem = 'Y' then 1 else 0 end
) as priorityItemYes
UPDATE Why sum()
instead of count()
, the reason is you are not counting the number of rows rather you are counting the sum/number of times certain column value is appearing using some condition. 更新为什么使用
sum()
而不是count()
,原因是您没有在计算行数,而是在使用某种条件计算某些列值出现的总和/次数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.