gpt4 book ai didi

Mysql 计算从给定 id 到返回计数值之和的范围内不同价格值的行

转载 作者:行者123 更新时间:2023-11-29 06:30:34 26 4
gpt4 key购买 nike

嗨,我有两个表,一个是产品表,下一个是价格表

产品表

Id  Name
1 Bike
2 Car
3 Van

价格表

Id Price   Pid
1 100 1
2 150 1
3 200 1
4 100 2
5 110 2
6 120 2
7 300 3
8 310 3

我的SQL查询

$sql = "SELECT SUM(CASE WHEN price >= 0 AND price <= 200 THEN 1 ELSE 0 END) AS `0-2`,
SUM(CASE WHEN price >= 201 AND price <= 500 THEN 1 ELSE 0 END) AS `2-5`,
COUNT(pid) AS `All Values`
FROM price where pid IN(1,2,3)";

当我运行此查询时,价格计数值如下所示

0-2 有 (6) 个计数2-5 有 (2) 计数

但这里我需要显示为like。在这里我希望显示为 0-200 之间匹配的两个产品,即 1,2 pids 等等0-2 (2) 计数2-5(1)计数

因为在价格表中有更多的产品价格选项,所以每个产品在表中都有 2 到 5 个不同的价格,但我应该将它显示为一个产品计数,甚至有更多的价格。

请告诉我如何编写 mysql 查询。

非常感谢你的帮助。

最佳答案

您可以使用 COUNT(DISTINCT CASE ..) 并在 THEN 子句中使用 pid 而不是 1

SELECT 
COUNT(DISTINCT CASE WHEN price >= 0 AND price <= 200 THEN pid END) AS `0-2`,
COUNT(DISTINCT CASE WHEN price >= 201 AND price <= 500 THEN pid END) AS `2-5`,
COUNT(DISTINCT pid) AS `All Values`
FROM price
WHERE pid IN(1,2,3)

DEMO

关于Mysql 计算从给定 id 到返回计数值之和的范围内不同价格值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28149835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com