因此,我有一个StockDistribution
的{{1}}表。我的StockBatch
中有一个StockBatch
。许多批次具有相同的mv_id
,所以我想计算一个mv_id
mv_id
个
我已经尝试过了:
StockBatch
甚至尝试过:
SELECT sd.code, COUNT(*) as count, sb.mv_id
FROM stock_distributions sd
INNER JOIN stock_batches sb ON sd.stock_batch_id = sb.id
GROUP BY sd.code, sb.merchant_variant_id
但是它不起作用,即使假定不是SELECT sd.code, COUNT(sb.mv_id) as count
,它也会返回1
。
答案 0 :(得分:0)
许多批次具有相同的mv_id,所以我想计算一个批次中有多少个mv_id
这听起来像与COUNT(DISTINCT)
的聚合:
SELECT sd.stock_batch_id, COUNT(DISTINCT sb.mv_id)
FROM stock_distributions sd INNER JOIN
stock_batches sb
ON sd.stock_batch_id = sb.id
GROUP BY sd.stock_batch_id;
但是,这令人困惑。每个“库存批次”是否有一行?如果是这样,mv_id
已经存储在该行上,所以我看不到如何有多个值。
答案 1 :(得分:0)
您需要使用COUNT(DISTINCT)。
SELECT sd.stock_batch_id
, COUNT(DISTINCT sb.mv_id)
FROM stock_distributions sd
INNER JOIN stock_batches sb
ON sd.stock_batch_id = sb.id
GROUP BY sd.stock_batch_id;
答案 2 :(得分:0)
您的问题需要更多的说明,请共享示例输入数据和所需的输出。
如果您要计数唯一的sb.mv_id,则将计数替换为COUNT(DISTINCT sb.mv_id)
尝试以下代码:
SELECT sd.stock_batch_id,sb.id, COUNT(sb.mv_id)
FROM stock_distributions sd INNER JOIN
stock_batches sb
ON sd.stock_batch_id = sb.id
GROUP BY sb.id;