有没有一种方法可以获取表示行中NULL字段数的列?这将在SELECT语句中。
例如:
Field1 Field2 Num_Null
-----------------------
NULL "A" 1
更新:我想要此查询,以便我可以基于给定书的有多少会员销售进行排序。因此,无论哪个会员,拥有3个会员的排名都会比拥有2个会员的排名高。我的数据库中大约有七个会员,并且会不断增长。因此,任何要求指定每个会员字段的查询都可能太长
桌子:
Affiliates_Cache-
主键是Affiliate_ISBN,具有该书在各个分支机构上的价格(如果不存在,则为NULL)。Affiliates_Cache是我要计算NULL数的那个
我不确定是否有更整洁的方法,但这应该可行:
SELECT Field1, Field2, ISNULL(Field1) + ISNULL(Field2) Num_Null
FROM YourTable;
测试用例:
CREATE TABLE YourTable (Field1 varchar(10), Field2 varchar(10));
INSERT INTO YourTable VALUES (NULL, 'A');
INSERT INTO YourTable VALUES ('B', 'C');
INSERT INTO YourTable VALUES ('B', NULL);
INSERT INTO YourTable VALUES (NULL, NULL);
结果:
+--------+--------+----------+
| Field1 | Field2 | Num_Null |
+--------+--------+----------+
| NULL | A | 1 |
| B | C | 0 |
| B | NULL | 1 |
| NULL | NULL | 2 |
+--------+--------+----------+
4 rows in set (0.00 sec)
更新: 除了更新的问题:
如果您的表中的列看起来像affiliate_1
,affiliate_2
等,则这不是一个好主意,因为您会将数据与元数据混合。通常,建议的解决方案是将另一个从属表用于用户与关联关系,如以下示例所示:
CREATE TABLE users (
user_id int,
user_name varchar(100),
PRIMARY KEY (user_id)
) ENGINE=INNODB;
CREATE TABLE users_affiliates (
user_id int,
affiliate_name varchar(100),
PRIMARY KEY (user_id, affiliate_name),
FOREIGN KEY (user_id) REFERENCES users (user_id)
) ENGINE=INNODB;
然后按users
会员数量对表格进行排序将如下所示:
SELECT u.*, d_tb.num_aff
FROM users
JOIN (
SELECT user_id, COUNT(*) num_aff
FROM users_affiliates
GROUP BY user_id
) d_tb ON (d_tb.user_id = u.user_id)
ORDER BY d_tb.num_aff DESC;
优点很多,但是最重要的是,它使上述查询更易于编写,并且足够灵活,可以与任何数量的分支机构一起使用(不受分配的列数的限制)。
问题内容: 如何在Python中计算连续字符,以查看每个唯一数字在下一个唯一数字之前重复的次数? 起初,我以为我可以做类似的事情: 这样,我就可以看到每个唯一数字重复的次数。但是,这当然会在达到最后一个值时超出范围。 在上面的示例中,我希望Python告诉我1重复1,而0重复3次。但是,由于我的while语句,上面的代码失败了。 我知道您可以使用内置函数来做到这一点,并且希望采用这种方式的解决方案
问题内容: 我希望为每个人计算连续的一天咒语。 我的表: 这是我目前拥有的代码: 产生结果: 在我正在寻找这样的结果集的地方: 我需要计算连续1天以上的连续天数。然后将其作为某人拥有多少个连续咒语的总和。例如,弗雷德在这段时间内连续2次生病。如果某人有星期五和星期一休息,我也需要此内容,这应该算作一个连续的咒语。 我对如何到达那里有些迷失。任何帮助将不胜感激。 请参阅:http ://sqlfid
问题内容: 我正在尝试计算股票收益数据中连续上升的天数- 因此,如果正数日为1,负数为0,则应该返回一个列表。 我来到了一个解决方案,它在代码行数方面很整洁,但是 非常 慢: 我猜想我遍历整个列表太多次了。是否有一种很好的Pythonic方式可以实现我想要的,而只需要遍历一次数据?我可以自己编写一个循环,但想知道是否有更好的方法。 谢谢! 问题答案: 为什么痴迷于超pythonic的做事方式?可读
问题内容: 假设我在numpy数组中有一堆数字,并且根据返回布尔数组的条件对它们进行了测试: 并使用此布尔数组,我想计算True连续出现的所有长度。例如,如果我有,我想回去。 我可以使用以下代码来做到这一点: 但是是否已经为此或python,numpy,scipy等函数实现了任何功能,该函数计算给定输入在列表或数组中连续出现的长度? 问题答案: 这是使用的解决方案(可能不是最快的解决方案):
我在Postgres数据库中有一个查询,它结合了客户端订阅。 我想添加一个称为“连续月份”的变量,但我不确定在Postgres中如何添加。 我的原始桌子是这样的: 我希望有一个连续数月的东西,比如: 谢谢你在先进的帮助!
我知道这是一个复杂的查询,因此我有一个单独的列,但该列包含几乎99%的null值(这是非常无效的),因此我想知道是否可以通过查询来实现这一点。 我有这样的桌子: 现在的查询是,如果对于3个连续的产品ID,对应的值是0(按照TransactionId ASC的顺序),那么对于,它将被计为1,即。 我们如何查询这个? 一个可选的简短问题:p 如果我有很多空值的列,可以吗?