![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
[Oracle ]Count records [D7]
McSimm2 © (2003-07-09 11:34:00)Есть 2 таблицы. Как посчитать общее число записей в таблицах ?
Делаю вот так :
SELECT SUM ( QUERY.sum1 + QUERY.sum2) as AllSum
FROM (SELECT 0 AS sum1, COUNT (*) AS sum2
FROM (SELECT DISTINCT ulica, dom, kvart
FROM table1)
UNION
SELECT COUNT (*) AS sum1, 0 AS sum2
FROM (SELECT DISTINCT ulica, dom, kvart
FROM table2)) QUERY
Может как нить покороче можно ???
DenK_vrtz (2003-07-09 13:53:00) [21]а результат DenK_vrtz © (09.07.03 11:43), интересно же! :-)
McSimm2 (09.07.03 13:51), так union и так повторяющиеся строки уберет!
McSimm2 (2003-07-09 13:51:00) [22]Johnmen © (09.07.03 12:57).
Distinct важен !!! его нельзя убирать..
Johnmen © (09.07.03 13:45)
SELECT
COUNT(DISTINCT ulica||"#"||dom||"#"||kvart)+
(SELECT COUNT(DISTINCT ulica||"#"||dom||"#"||kvart) FROM T2)+
^^^^^ Групповая функция является одногрупной
(SELECT COUNT(DISTINCT ulica||"#"||dom||"#"||kvart) FROM T3)
FROM T1
Johnmen (2003-07-09 13:45:00) [23]>McSimm2 (09.07.03 13:38)
>Такая конструкция не правильна !!!:
Такая конструкцияправильна. Просто закрывающие скобки упустил...:)
SELECT COUNT+(SELECT)+(SELECT) FROM T
А какой показатель у Johnmen © (09.07.03 12:57) ?
McSimm2 (2003-07-09 13:38:00) [24]To Johnmen © (09.07.03 13:22)
Такая конструкция не правильна !!!:
SELECT
COUNT(DISTINCT ulica||"#"||dom||"#"||kvart)+
(SELECT COUNT(DISTINCT ulica||"#"||dom||"#"||kvart) FROM T2)+
(SELECT COUNT(DISTINCT ulica||"#"||dom||"#"||kvart) FROM T3)+
FROM T1
Прокатывает когда пишешь
SELECT (SELECT COUNT(DISTINCT ulica||"#"||dom||"#"||kvart)FROM T1)+
(SELECT COUNT(DISTINCT ulica||"#"||dom||"#"||kvart) FROM T2)+
(SELECT COUNT(DISTINCT ulica||"#"||dom||"#"||kvart) FROM T3)
from dual
Время отработки - 33 секунды, что опять же то же самое :(
Johnmen (2003-07-09 13:22:00) [25]>McSimm2 (09.07.03 13:11)
Тогда так :
SELECT
COUNT(DISTINCT ulica||"#"||dom||"#"||kvart)+
(SELECT COUNT(DISTINCT ulica||"#"||dom||"#"||kvart) FROM T2)+
(SELECT COUNT(DISTINCT ulica||"#"||dom||"#"||kvart) FROM T3)+
FROM T1
где вместо # м.б. любой символ, заведомо не встречающийся в значениях полей.
>DenK_vrtz © (09.07.03 13:15)
А это пусть автор проверяет. Заодно и, надеюсь, сообщит результаты.
DenK_vrtz (2003-07-09 13:15:00) [26]Johnmen © (09.07.03 12:57), законно! Но будет ли быстрее, это вопрос!
McSimm2 (2003-07-09 13:11:00) [27]ULICA VARCHAR2 (15),
DOM VARCHAR2 (7),
KVART VARCHAR2 (3),
Johnmen (2003-07-09 12:57:00) [28]Кстати, еще проще :
в DenK_vrtz © (09.07.03 11:43) просто убрать DISTINCT и all
Но вопрос пока остается - Johnmen © (09.07.03 12:08).
Max Zyuzin (2003-07-09 12:49:00) [29]Зато запрос стал стильнее выглядеть :-)
DenK_vrtz (2003-07-09 12:27:00) [30]Огласите весь список, пожалуйста :-)
Johnmen (2003-07-09 12:08:00) [31]>McSimm2
Какого типа поля ulica, dom, kvart ?
McSimm2 (2003-07-09 12:00:00) [32]SELECT SUM ( QUERY.sum0 + QUERY.sum1 + QUERY.sum2) AS allsum
FROM (SELECT 0 AS sum0, 0 AS sum1, COUNT (*) AS sum2
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved)
UNION
SELECT 0 AS sum0, COUNT (*) AS sum1, 0 AS sum2
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs)
UNION
SELECT COUNT (*) AS sum0, 0 AS sum1, 0 AS sum2
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)) QUERY
выполнялся 32 секунды, а
SELECT (SELECT COUNT (*)
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_ved )t2)
+ (SELECT COUNT (*)
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm_chs)t3)
+ (SELECT COUNT (*)
FROM (SELECT DISTINCT ulica, dom, kvart, n_lc, rajon, jeu
FROM ivc.ksm)t1)
from dual
выполнялся 33 секунды, проще говоря по скорости ничего не выгодал :( ...
DenK_vrtz (2003-07-09 11:56:00) [33]McSimm2 (09.07.03 11:34), статистику по выполнениям запросов, в студию, пожалуйста!!! :-)
Max Zyuzin (2003-07-09 11:51:00) [34]На сколько у меня короче вышло не знаю :-)
DenK_vrtz (2003-07-09 11:50:00) [35]Johnmen © (09.07.03 11:49), согласен! :-))
Max Zyuzin (2003-07-09 11:50:00) [36]>McSimm2 (09.07.03 11:34)
select
(select count(*) from (SELECT DISTINCT ulica, dom, kvart FROM table1))
+
(select count(*) from (SELECT DISTINCT ulica, dom, kvart FROM table2))
from dual
Johnmen (2003-07-09 11:49:00) [37]>DenK_vrtz © (09.07.03 11:46)
Предполагаю, что автор сам сообразит, где расставить DISTINCT
:)))
DenK_vrtz (2003-07-09 11:46:00) [38]Johnmen © (09.07.03 11:44), а повторяющиеся записи тоже посчитаются! :-)
DenK_vrtz (2003-07-09 11:44:00) [39]Скобку забыл в конце поставить :-)
Johnmen (2003-07-09 11:44:00) [40]SELECT COUNT(*)+(SELECT COUNT(*) FROM T2) FROM T1