gpt4 book ai didi

php - 如何使用 CASE 加 JOIN 加 GROUP BY 到单个 MySQL 语句中

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

SELECT B. * , SC.cate_name, (
CASE WHEN special_offer_type = 'Fixed Value'
THEN B.price - special_offer
WHEN special_offer_type = 'Discount %'
THEN B.price * ( 1 - special_offer / 100.0 )
ELSE B.price
END
) AS final_price
FROM book B
JOIN setting_category SC ON B.cate_id = SC.cate_id

使用上面的编码CASEJOIN,我在ideal_result_table添加了2个字段cate_namefinal_price (谢谢戈登·利诺夫)

现在我想计算 ideal_result_table 中另外 2 个名为 avg_ratecount_comment 的字段,我该怎么做?

用户 AAA 和 BBB 对图书 001 进行了评分,因此图书 001 的 avg_rate 为 (4+5)/2 = 4.5 = 5

用户 CCC 对图书 002 进行了评分,因此图书 002 的 avg_rate 为 2

用户 XXX 和 YYY 对图书 001 添加了评论,因此图书 001 的 count_comment = 2

book
-----------------------------------------------------------
isbn cate_id price special_offer special_offer_type
001 1 125 5 Fixed Value
002 1 90 30 Discount %
003 2 150 50 Fixed Value

setting_category
--------------------
cate_id cate_name
1 Fiction
2 Dictionary

book_rating
------------------------------------------
user dateadd timeadd isbn rate
AAA 2014/03/20 15:00:00 001 4
BBB 2014/03/21 15:00:00 001 5
CCC 2014/03/22 15:00:00 002 2

book_comment
----------------------------------------------
user dateadd timeadd isbn comment
XXX 2014/03/20 16:00:00 001 good
YYY 2014/03/21 16:00:00 001 great

ideal_result_table
-----------------------------------------------------------------------------------------------------------------
isbn cate_id price special_offer special_offer_type cate_name final_price avg_rate count_comment
001 1 125 5 Fixed Value Fiction 120 5 2
002 1 90 30 Discount % Fiction 63 2 0
003 2 150 50 Fixed Value Dictionary 100 0 0

最佳答案

试试这个:

SELECT B.*,SC.cate_name,(
当special_offer_type ='固定值'时的情况
然后 B.价格 - 特别优惠
当special_offer_type = '折扣%'时
然后 B.价格 * ( 1 - 特价/100.0 )
ELSE B.价格
结尾
) 作为最终价格,
IFNULL(xx.avg_rate,'0'),
IFNULL(yy.count_comment,'0')
FROM 书 B JOIN 设置类别 SC ON B.cate_id = SC.cate_id
LEFT JOIN(选择 a.isbn,sum(a.rate)/count(a.rate) 作为 avg_rate
来自 book_ rating a
按 a.isbn 分组) 作为 b.isbn 上的 xx = xx.isbn
LEFT JOIN(从 book_comment c 选择 c.isbn,count(*) 作为 count_comment
按 c.isbn 分组)作为 b.isbn 上的 yy = yy.isbn

CMIIW

已编辑..

关于php - 如何使用 CASE 加 JOIN 加 GROUP BY 到单个 MySQL 语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22602262/

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