我对MySQL有点不熟练,所以我希望我能在这里找到一些关于我的问题的建议.
基本上我有两个表,为方便起见,称它们为A和B. 两个表都有一个可以为空的C列varchar.当我使用C加入A和B时,我丢失了任何表中C为NULL的所有行.我知道这在MySQL中是正常的,但我想得到的是一个包含两个表中C为NULL的行组合的连接.我发现下面的查询似乎运行良好.
SELECT *
FROM A JOIN B
ON (A.C IS NULL AND B.C IS NULL) OR (A.C IS NOT NULL AND B.C IS NOT NULL AND A.C = B.C)
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,这个查询是我能得到的最好的,还是有办法让这个联接变得更好?谢谢!
我搜索了所有内容,但似乎找不到如何计算每个客户的两次订单之间的平均时间。我正在使用Oracle SQL Developer。香港专业教育学院试图使用lag()函数没有喜悦。
以下示例数据显示了在3个不同情况下购买的客户。所有购买之间的平均时间为7.5天((6 + 9)/ 2)。
CustID OrderDate
------- ---------
1000000 14-AUG-12
1000000 23-AUG-12
1000000 29-AUG-12
Run Code Online (Sandbox Code Playgroud)
那么,如何计算每个客户的平均值?
任何帮助将非常感激。
从guid列获取数值的最佳方法是什么?
我正在尝试这条线,但我得到:
ORA-00904: "HASHBYTES": invalid identifier
00904. 00000 - "%s: invalid identifier"
Run Code Online (Sandbox Code Playgroud)
查询如下:
SELECT HASHBYTES('MD5',CAST(prod AS varchar2(30)))
FROM PRODS;
Run Code Online (Sandbox Code Playgroud)
请指教.
我有X个值通过CSV传递到表中 - 所以我将99315,99316,99223分成一个列临时表 - 将CSV中的每个值分成一行.
我需要做的是成对地获取每个值的排列 - 所以 - 例如:
Col1 Col2
99315 99316
99315 99223
99316 99315
99316 99223
99223 99315
99223 99316
Run Code Online (Sandbox Code Playgroud) 我有3个查询工作完美
SELECT snapdate, COUNT( DISTINCT uid) AS t1
FROM table where tid =1
GROUP BY snapdate
ORDER BY snapdate DESC LIMIT 7
Run Code Online (Sandbox Code Playgroud)
查询#1:
snapdate t1
---------- --
2013-07-02 10
2013-07-01 20
2013-06-30 60
2013-06-29 80
2013-06-28 3
2013-06-27 22
2013-06-26 93
Run Code Online (Sandbox Code Playgroud)
查询#2:
SELECT snapdate, COUNT( DISTINCT uid) AS t2
FROM table where tid =2
GROUP BY snapdate
ORDER BY snapdate DESC LIMIT 7
snapdate t2
---------- --
2013-07-02 35
2013-07-01 52
2013-06-30 69
2013-06-29 75
2013-06-28 91
2013-06-27 97
2013-06-26 …Run Code Online (Sandbox Code Playgroud) sql ×4
mysql ×2
oracle ×2
database ×1
guid ×1
join ×1
nullable ×1
permutation ×1
primary-key ×1
sql-server ×1
t-sql ×1