Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

[Oracle ]Count records [D7]


Страницы:   1 2 3

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


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо