长期读者,第一次海报。我有一张表,我需要从中收集一些值(在“product_group”列中找到)重复的时间量,并且有时还必须考虑来自不同列(“product_type”)的值。
我在论坛上搜索了很长时间,这就是我暂时想到的……我的问题是我觉得这不是最有效的方法。此外,如果没有条件匹配(例如其他条件),它不会让我计算。
SELECT
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product1%', 1, 0)) AS Value1,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product2%', 1, 0)) AS Value2,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product3%', 1, 0)) AS Value3,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product4%', 1, 0)) AS Value4,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product5%', 1, 0)) AS Value5,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product6%', 1, 0)) AS Value6,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product7%', 1, 0)) AS Value7,
SUM(IF(record_type NOT LIKE '%TypeA%' AND product_group LIKE '%Product8%', 1, 0)) AS Value8,
SUM(product_group NOT LIKE '%Product9%') AS Value9,
SUM(IF(record_type LIKE '%TypeA%', 1, 0)) AS Value10
FROM
[tables]
WHERE
[conditions]
我的目标是找出加权的用户生产力。所以我计算用户每次处理特定产品的时间。根据产品的类型,我将修改值(从原始的 0.83 到 1.25)以考虑复杂性。一旦所有不同产品的重量都被“碾压”过,我将它们全部加起来,然后除以工作小时数。
数学是在我的 PHP 代码中的 SQL 查询之外完成的。我想知道使用 WHERE 部分中的条件而不是我以前的方法运行多个顺序 SQL 查询是否会更好。这是在这种情况下的样子......
SELECT
COUNT(*)*0.95 as `Value1`
FROM
[tables]
WHERE
record_type NOT LIKE '%TypeA%'
AND product_group LIKE '%Product1%'
[other conditions]
然后对所有其他 10 个左右的值重复...
所以这几乎总结了它。任何可以与我分享的建议、提示、链接将不胜感激,因为我已经用尽了我能想到的所有资源。
问候