我对 SQL 完全陌生,并且已阅读有关 SQL 的 StackOverflow 帖子以尝试解决此问题,以及其他来源,但无法在 SQL 中执行此操作。开始...
我有一个 3 列和数千行的表,其中包含前 2 列的数据。第三列当前为空,我需要根据第一列和第二列中已有的数据填充第三列。
假设我在第一列中有状态,在第二列中有水果条目。我需要编写一个 SQL 语句来计算每个水果来自的不同状态的数量,然后将这个受欢迎程度数字插入每一行的第三列。该行中的流行数字 1 表示水果仅来自一个州,流行数字 4 表示水果来自 4 个州。所以我的桌子目前是这样的:
state fruit popularity
hawaii apple
hawaii apple
hawaii banana
hawaii kiwi
hawaii kiwi
hawaii mango
florida apple
florida apple
florida apple
florida orange
michigan apple
michigan apple
michigan apricot
michigan orange
michigan pear
michigan pear
michigan pear
texas apple
texas banana
texas banana
texas banana
texas grape
我需要弄清楚如何计算然后更新第三列,名为流行度,它是出口该水果的州的数量。目标是产生(对不起双关语)下表,根据上表,“苹果”出现在所有 4 个州,橙子和香蕉出现在 2 个州,猕猴桃、芒果、梨和葡萄只出现在 1 个州状态,因此它们相应的流行度数。
state fruit popularity
hawaii apple 4
hawaii apple 4
hawaii banana 2
hawaii kiwi 1
hawaii kiwi 1
hawaii mango 1
florida apple 4
florida apple 4
florida apple 4
florida orange 2
michigan apple 4
michigan apple 4
michigan apricot 1
michigan orange 2
michigan pear 1
michigan pear 1
michigan pear 1
texas apple 4
texas banana 2
texas banana 2
texas banana 2
texas grape 1
我的小程序员大脑说要尝试找出一种在某种脚本中循环遍历数据的方法,但是稍微阅读一下 SQL 和数据库,似乎您不会在 SQL 中编写又长又慢的循环脚本。我什至不确定你是否可以?但相反,在 SQL 中有更好/更快的方法来做到这一点。
任何人都知道如何在 SQL 语句中计算和更新每一行的第三列,这里称为流行度,对应于每个水果来自的状态数?感谢阅读,非常感谢任何帮助。
到目前为止,我已经在下面尝试了这些 SQL 语句,这些语句的输出但并不能完全满足我的需求:
--outputs those fruits appearing multiple times in the table
SELECT fruit, COUNT(*)
FROM table
GROUP BY fruit
HAVING COUNT(*) > 1
ORDER BY COUNT(*) DESC
--outputs those fruits appearing only once in the table
SELECT fruit, COUNT(*)
FROM table
GROUP BY fruit
HAVING COUNT(*) = 1
--outputs list of unique fruits in the table
SELECT COUNT (DISTINCT(fruit))
FROM table