gpt4 book ai didi

mysql - SQL DML 脚本

转载 作者:行者123 更新时间:2023-11-29 03:05:48 28 4
gpt4 key购买 nike

对于给定的时间段(包括两个给定日期),例如 2002 年 12 月 1 日至 2003 年 7 月 31 日,找到在指定时间内至少拥有一张 EZ link 卡的人的集合。为了集合中的每个人,列出 (i) 所有者 NRIC,(ii) 他/她在期间发行的卡的总数期间,以及 (iii) 更换卡片的总数(截至当前日期)只有在给定期间发行的那些卡的所有者。以升序列出你的结果所有者身份证的顺序。

create table card
(
CardID int not null primary key,
OwnerNRIC char(9),
IssuedDcardate date,
StoredValue decimal (5,2),
OldCardID int,
constraint card_fk foreign key (OldCardID) references card(CardID)
);

如上是我的牌 table 。

这是我的尝试,但我很迷茫。

 Select distinct(ownerNRIC) as NRIC,count(*) as Total Crads Issued during Period
From card
Where issuedDate between ‘2002-12-01’ and ‘2003-7-31’ group by ownerNRIC;

最佳答案

我假设更换卡片会产生非空的 OldCardId。如果 OldCardId 为 NULL,则这不是卡片替换。利用 COUNT(expr) 忽略 expr 为 NULL 的行的方式。

SELECT ownerNRIC AS NRIC, 
COUNT(*) AS `Total Cards Issued During Period`,
COUNT(OldCardID) AS `Card Replacements During Period`
FROM card
WHERE issuedDate BETWEEN '2002-12-01' AND '2003-7-31'
GROUP BY ownerNRIC;

您错误地使用了 DISTINCT。它不是一个函数,也没有必要,因为 ownerNRIC 是您的 GROUP BY 列。

total number of card replacements (till current date) that have been made by the owner for only those cards that were issued during the given period

这个要求不明确。你的意思是旧卡是在给定时间段内签发的,而新卡是截至当前日期的任何时间签发的?如果是这样,上面的查询不会给你。

关于mysql - SQL DML 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15550748/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com