我生成了下表:
CREATE table user (
user_id INT NOT NULL UNIQUE AUTO_INCREMENT,
user_phone_number INT,
user_city VARCHAR(32) NOT NULL,
PRIMARY KEY (user_id)
);
我被问到以下问题:每个电话号码长度的用户数(数字位数(
我尝试以下方法:
SELECT LENGTH(user_phone_number)
FROM user
WHERE user is not null
GROUP BY user_phone_number);
但是,如果有多个用户具有相同的电话号码长度,则会分几行重复它们,而不是提供每个长度的总数。请帮忙
你的 SQL 有两个问题。 最明显的是你遗漏了COUNT()
. 如果你想计算一些东西,这很重要。
第二个是SELECT
列和GROUP BY
列不匹配。 这些应该(几乎总是(相同:
SELECT LENGTH(user_phone_number), COUNT(*)
FROM user
WHERE user_phone_number is not null
GROUP BY LENGTH(user_phone_number);
您可能希望在最后有一个ORDER BY LENGTH(user_phone_number)
。