[英]php-Mysql Write a Group By query issue
我有一个名为comparitive_st_sup的表。 结构如下:
╔════╦═══════════╦═══════════╦════════╦═══════╗
║ id ║ tender_id ║ item_name ║ ifmain ║ total ║
╠════╬═══════════╬═══════════╬════════╬═══════╣
║ 1 ║ 400 ║ Item 1 ║ Yes ║ 2000 ║
║ 2 ║ 400 ║ Item 2 ║ Yes ║ 2500 ║
║ 3 ║ 400 ║ Item 3 ║ No ║ 2000 ║
║ 4 ║ 400 ║ Item 4 ║ No ║ 2900 ║
║ 5 ║ 400 ║ Item 5 ║ Yes ║ 3100 ║
║ 6 ║ 402 ║ Item 9 ║ Yes ║ 877 ║
║ 7 ║ 402 ║ Item 7 ║ No ║ 9888 ║
╚════╩═══════════╩═══════════╩════════╩═══════╝
现在,我需要按bid_id和ifmain分组并显示总数。 例如:
400 Yes 7600 (2000 + 2500 + 3100 that is ifmain=Yes)
400 No 4900 (2000 + 2900 that is ifmain=No)
我尝试了以下查询。 但它不起作用:
SELECT
SUM(total) AS maintotal,
SUM(total) AS subtotal, fmain
FROM comparitive_st_sup
WHERE tender_id='$tender_id'
GROUP BY ifmain
两步GROUP BY
怎么样?
SELECT tender_id, ifmain, SUM(total)
FROM comparative_st_sup
WHERE tender_id='$tender_id' # replace with any WHERE condition you want
GROUP BY tender_id, ifmain
我保留了出现在原始查询中的WHERE
子句。 如果将WHERE
条件更改为一个范围,或将结果集包含多个唯一的tender_id
任何内容tender_id
,那么我的GROUP BY
tender_id
上用场。
单击下面的链接以获取查询的演示:
更新:
如果要在结果集中将“ Yes
和“ No
总和视为单独的列,可以尝试以下方式进行查询:
SELECT tender_id,
SUM(CASE WHEN ifmain = 'Yes' THEN total ELSE 0 END) AS maintotal,
SUM(CASE WHEN ifmain = 'No' THEN total ELSE 0 END) AS subtotal,
FROM comparative_st_sup
WHERE tender_id='$tender_id'
GROUP BY tender_id
同样,您可以更改WHERE
子句以适合您的需求,或者将其完全删除。
使用以下两个字段进行分组:
Select sum(total) as maintotal, sum(total) as subtotal, fmain
from comparitive_st_sup
where tender_id='$tender_id'
group by ifmain, ifmain
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.